{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "Reinforcement_learning_Trial_1.ipynb",
      "version": "0.3.2",
      "provenance": [],
      "collapsed_sections": []
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.6.3"
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "id": "3nhpFbIgv4Sz",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        },
        "outputId": "5df0cf01-f8fb-4a31-d5ab-458a5a8c7c56"
      },
      "source": [
        "!git clone https://github.com/sachink2010/AutomatedStockTrading-DeepQ-Learning.git"
      ],
      "execution_count": 1,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "fatal: destination path 'AutomatedStockTrading-DeepQ-Learning' already exists and is not an empty directory.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "6GMCkV8xv9YD",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        },
        "outputId": "c3b72870-a238-4121-82df-9d34050d56e7"
      },
      "source": [
        "%cd AutomatedStockTrading-DeepQ-Learning/"
      ],
      "execution_count": 2,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "/content/AutomatedStockTrading-DeepQ-Learning\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "muj1Bnz9vjta",
        "colab_type": "text"
      },
      "source": [
        "# Deep Q- learning Agent- Stock Trading"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "OlHgTMGQvjte",
        "colab_type": "text"
      },
      "source": [
        "### Import- Data and Functions"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ShV0Yd0Tvjtg",
        "colab_type": "text"
      },
      "source": [
        "<b> \n",
        "    We begin with inputing following variables:\n",
        "    - Stock1_name: this is first stock name, which is Apple - aapl.us\n",
        "    - Stock2_name: this is second stock name, which is Amazon - amzn.us\n",
        "    - episode_count: This is number of episodes which agent till train on\n",
        "    - Start_balance: This is the initial starting cash, which is $ 50,000\n",
        "    - Training: This is number of records used for trading i.e. number of days on each episode of training will run\n",
        "    - Test: This is number of days on which test run will be executed \n",
        " \n",
        " </b>\n",
        "\n",
        "\n",
        "\n",
        "\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "6tKaHp1Zvjti",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        },
        "outputId": "cbf1625f-e16f-4661-edd8-135ce73ad17c"
      },
      "source": [
        "\n",
        "from agent.agent import Agent\n",
        "from state.state import State\n",
        "import pandas as pd\n",
        "from functions import *\n",
        "import sys\n",
        "\n",
        "import pandas as pd\n",
        "\n",
        "import math, random \n",
        "import numpy as np \n",
        "from datetime import datetime, timedelta\n",
        "\n",
        "#stock_name, window_size, episode_count = sys.argv[1], int(sys.argv[2]), int(sys.argv[3])\n",
        "\n",
        "stock_name1,stock_name2, episode_count, start_balance, training, test = 'aapl.us','amzn.us', 51,10000,1500,500\n",
        "\n",
        "\n",
        "pd_data1=pd.read_csv('data/aapl.us.txt', sep=\",\", header=0)\n",
        "pd_data2=pd.read_csv('data/amzn.us.txt', sep=\",\", header=0)\n",
        "\n",
        "\n"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Using TensorFlow backend.\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "vGwVhn27vjtr",
        "colab_type": "text"
      },
      "source": [
        "### Data Pre-processing"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "3qy3jrI-vjtt",
        "colab_type": "text"
      },
      "source": [
        "In this section we will do the following:\n",
        "1. Look at the data of Apple and Amazon stock for checking anamolies (missing data etc.). Also convert date into right format\n",
        "2. Make sure that both the stock data is for the same time period and same days in this time period. Remove data if necessary\n",
        "3. Look at descriptive statistics of data- mean, median, number of records\n",
        "4. Visualize the data to see how stock price changes with time\n",
        "    "
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ZX_kg-I1vjtv",
        "colab_type": "text"
      },
      "source": [
        "#### View Apple Stock data"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5zNa43glvjtx",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 204
        },
        "outputId": "ee45f2ce-a40e-4114-9ee1-9092ad8c51cd"
      },
      "source": [
        "\n",
        "pd_data1.head()\n"
      ],
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Date</th>\n",
              "      <th>Open</th>\n",
              "      <th>High</th>\n",
              "      <th>Low</th>\n",
              "      <th>Close</th>\n",
              "      <th>Volume</th>\n",
              "      <th>OpenInt</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>1984-09-07</td>\n",
              "      <td>0.42388</td>\n",
              "      <td>0.42902</td>\n",
              "      <td>0.41874</td>\n",
              "      <td>0.42388</td>\n",
              "      <td>23220030</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1984-09-10</td>\n",
              "      <td>0.42388</td>\n",
              "      <td>0.42516</td>\n",
              "      <td>0.41366</td>\n",
              "      <td>0.42134</td>\n",
              "      <td>18022532</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>1984-09-11</td>\n",
              "      <td>0.42516</td>\n",
              "      <td>0.43668</td>\n",
              "      <td>0.42516</td>\n",
              "      <td>0.42902</td>\n",
              "      <td>42498199</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>1984-09-12</td>\n",
              "      <td>0.42902</td>\n",
              "      <td>0.43157</td>\n",
              "      <td>0.41618</td>\n",
              "      <td>0.41618</td>\n",
              "      <td>37125801</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>1984-09-13</td>\n",
              "      <td>0.43927</td>\n",
              "      <td>0.44052</td>\n",
              "      <td>0.43927</td>\n",
              "      <td>0.43927</td>\n",
              "      <td>57822062</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "         Date     Open     High      Low    Close    Volume  OpenInt\n",
              "0  1984-09-07  0.42388  0.42902  0.41874  0.42388  23220030        0\n",
              "1  1984-09-10  0.42388  0.42516  0.41366  0.42134  18022532        0\n",
              "2  1984-09-11  0.42516  0.43668  0.42516  0.42902  42498199        0\n",
              "3  1984-09-12  0.42902  0.43157  0.41618  0.41618  37125801        0\n",
              "4  1984-09-13  0.43927  0.44052  0.43927  0.43927  57822062        0"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 4
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "-EvjcQRGvjt_",
        "colab_type": "text"
      },
      "source": [
        "#### View Amazon Stock data\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "0b_ZfTXHvjuC",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 204
        },
        "outputId": "c9648208-6776-49be-a20b-854cb76ee511"
      },
      "source": [
        "\n",
        "pd_data2.head()\n"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Date</th>\n",
              "      <th>Open</th>\n",
              "      <th>High</th>\n",
              "      <th>Low</th>\n",
              "      <th>Close</th>\n",
              "      <th>Volume</th>\n",
              "      <th>OpenInt</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>1997-05-16</td>\n",
              "      <td>1.97</td>\n",
              "      <td>1.98</td>\n",
              "      <td>1.71</td>\n",
              "      <td>1.73</td>\n",
              "      <td>14700000</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>1997-05-19</td>\n",
              "      <td>1.76</td>\n",
              "      <td>1.77</td>\n",
              "      <td>1.62</td>\n",
              "      <td>1.71</td>\n",
              "      <td>6106800</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>1997-05-20</td>\n",
              "      <td>1.73</td>\n",
              "      <td>1.75</td>\n",
              "      <td>1.64</td>\n",
              "      <td>1.64</td>\n",
              "      <td>5467200</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>1997-05-21</td>\n",
              "      <td>1.64</td>\n",
              "      <td>1.65</td>\n",
              "      <td>1.38</td>\n",
              "      <td>1.43</td>\n",
              "      <td>18853200</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>1997-05-22</td>\n",
              "      <td>1.44</td>\n",
              "      <td>1.45</td>\n",
              "      <td>1.31</td>\n",
              "      <td>1.40</td>\n",
              "      <td>11776800</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "         Date  Open  High   Low  Close    Volume  OpenInt\n",
              "0  1997-05-16  1.97  1.98  1.71   1.73  14700000        0\n",
              "1  1997-05-19  1.76  1.77  1.62   1.71   6106800        0\n",
              "2  1997-05-20  1.73  1.75  1.64   1.64   5467200        0\n",
              "3  1997-05-21  1.64  1.65  1.38   1.43  18853200        0\n",
              "4  1997-05-22  1.44  1.45  1.31   1.40  11776800        0"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 5
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "26MhXJTXvjuL",
        "colab_type": "text"
      },
      "source": [
        "#### Date in Above data is not in Dateformat, so converting date to date format "
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "gDRohgM5vjuN",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#Convert  Date to Date format\n",
        "pd_data1['Date']=pd.to_datetime(pd_data1['Date'], format='%Y/%m/%d')\n",
        "pd_data2['Date']=pd.to_datetime(pd_data2['Date'], format='%Y/%m/%d')"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "PJgehGvRvjuT",
        "colab_type": "text"
      },
      "source": [
        "#### Desciptive statistics of Apple and Amazon data"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "eFB1rqPVvjuW",
        "colab_type": "text"
      },
      "source": [
        "Apple Stock- descriptive statistics"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "3Uat5_6JvjuZ",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 297
        },
        "outputId": "48a57190-6562-487b-98da-8fb3ab0ed5cd"
      },
      "source": [
        "pd_data1.describe()"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Open</th>\n",
              "      <th>High</th>\n",
              "      <th>Low</th>\n",
              "      <th>Close</th>\n",
              "      <th>Volume</th>\n",
              "      <th>OpenInt</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>count</th>\n",
              "      <td>8364.000000</td>\n",
              "      <td>8364.000000</td>\n",
              "      <td>8364.000000</td>\n",
              "      <td>8364.000000</td>\n",
              "      <td>8.364000e+03</td>\n",
              "      <td>8364.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mean</th>\n",
              "      <td>22.284350</td>\n",
              "      <td>22.495867</td>\n",
              "      <td>22.054244</td>\n",
              "      <td>22.281018</td>\n",
              "      <td>1.066416e+08</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>std</th>\n",
              "      <td>37.763402</td>\n",
              "      <td>38.057733</td>\n",
              "      <td>37.447432</td>\n",
              "      <td>37.764469</td>\n",
              "      <td>9.935187e+07</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>min</th>\n",
              "      <td>0.233050</td>\n",
              "      <td>0.235640</td>\n",
              "      <td>0.230510</td>\n",
              "      <td>0.230510</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25%</th>\n",
              "      <td>1.137100</td>\n",
              "      <td>1.164200</td>\n",
              "      <td>1.112800</td>\n",
              "      <td>1.137100</td>\n",
              "      <td>4.384365e+07</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>50%</th>\n",
              "      <td>1.632800</td>\n",
              "      <td>1.663400</td>\n",
              "      <td>1.600600</td>\n",
              "      <td>1.628250</td>\n",
              "      <td>7.481383e+07</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>75%</th>\n",
              "      <td>23.739000</td>\n",
              "      <td>23.930500</td>\n",
              "      <td>23.335750</td>\n",
              "      <td>23.694500</td>\n",
              "      <td>1.320534e+08</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>max</th>\n",
              "      <td>175.110000</td>\n",
              "      <td>175.610000</td>\n",
              "      <td>174.270000</td>\n",
              "      <td>175.610000</td>\n",
              "      <td>2.069770e+09</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "              Open         High  ...        Volume  OpenInt\n",
              "count  8364.000000  8364.000000  ...  8.364000e+03   8364.0\n",
              "mean     22.284350    22.495867  ...  1.066416e+08      0.0\n",
              "std      37.763402    38.057733  ...  9.935187e+07      0.0\n",
              "min       0.233050     0.235640  ...  0.000000e+00      0.0\n",
              "25%       1.137100     1.164200  ...  4.384365e+07      0.0\n",
              "50%       1.632800     1.663400  ...  7.481383e+07      0.0\n",
              "75%      23.739000    23.930500  ...  1.320534e+08      0.0\n",
              "max     175.110000   175.610000  ...  2.069770e+09      0.0\n",
              "\n",
              "[8 rows x 6 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 7
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RsjV7_mqvjuh",
        "colab_type": "text"
      },
      "source": [
        "Amazon Stock- descriptve statistics"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rNGGCfTlvjuj",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 297
        },
        "outputId": "2a2482e9-c463-455a-abae-22d42be60051"
      },
      "source": [
        "pd_data2.describe()"
      ],
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Open</th>\n",
              "      <th>High</th>\n",
              "      <th>Low</th>\n",
              "      <th>Close</th>\n",
              "      <th>Volume</th>\n",
              "      <th>OpenInt</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>count</th>\n",
              "      <td>5153.000000</td>\n",
              "      <td>5153.000000</td>\n",
              "      <td>5153.000000</td>\n",
              "      <td>5153.000000</td>\n",
              "      <td>5.153000e+03</td>\n",
              "      <td>5153.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mean</th>\n",
              "      <td>181.747357</td>\n",
              "      <td>183.880652</td>\n",
              "      <td>179.466684</td>\n",
              "      <td>181.769343</td>\n",
              "      <td>7.837325e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>std</th>\n",
              "      <td>239.611052</td>\n",
              "      <td>241.226109</td>\n",
              "      <td>237.638139</td>\n",
              "      <td>239.548391</td>\n",
              "      <td>7.594745e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>min</th>\n",
              "      <td>1.410000</td>\n",
              "      <td>1.450000</td>\n",
              "      <td>1.310000</td>\n",
              "      <td>1.400000</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25%</th>\n",
              "      <td>35.500000</td>\n",
              "      <td>36.130000</td>\n",
              "      <td>35.000000</td>\n",
              "      <td>35.550000</td>\n",
              "      <td>3.779449e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>50%</th>\n",
              "      <td>70.900000</td>\n",
              "      <td>72.750000</td>\n",
              "      <td>69.020000</td>\n",
              "      <td>70.700000</td>\n",
              "      <td>5.902992e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>75%</th>\n",
              "      <td>242.850000</td>\n",
              "      <td>245.770000</td>\n",
              "      <td>240.670000</td>\n",
              "      <td>243.880000</td>\n",
              "      <td>8.888949e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>max</th>\n",
              "      <td>1126.100000</td>\n",
              "      <td>1135.540000</td>\n",
              "      <td>1124.060000</td>\n",
              "      <td>1132.880000</td>\n",
              "      <td>1.043288e+08</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "              Open         High  ...        Volume  OpenInt\n",
              "count  5153.000000  5153.000000  ...  5.153000e+03   5153.0\n",
              "mean    181.747357   183.880652  ...  7.837325e+06      0.0\n",
              "std     239.611052   241.226109  ...  7.594745e+06      0.0\n",
              "min       1.410000     1.450000  ...  0.000000e+00      0.0\n",
              "25%      35.500000    36.130000  ...  3.779449e+06      0.0\n",
              "50%      70.900000    72.750000  ...  5.902992e+06      0.0\n",
              "75%     242.850000   245.770000  ...  8.888949e+06      0.0\n",
              "max    1126.100000  1135.540000  ...  1.043288e+08      0.0\n",
              "\n",
              "[8 rows x 6 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 8
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "djwRIq9Svjuv",
        "colab_type": "text"
      },
      "source": [
        "#### Drop Data that is not in both stock data- some days data is missing in Apple and some in Amazon"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "wVZZJwYVvjux",
        "colab_type": "text"
      },
      "source": [
        "I have made another program to look at data that is common in both stocks and to find out if there are any anamolies. Using this program I found out some data that is missing in either Apple or Amazon stock data\n"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Dll1lkx1vju1",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        },
        "outputId": "2df31b8c-fca5-4493-f130-ae8ecd007338"
      },
      "source": [
        "pd_data2['Date'][0]"
      ],
      "execution_count": 9,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Timestamp('1997-05-16 00:00:00')"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 9
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "FU2cU3ZCvjvB",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        },
        "outputId": "18214a3f-ad85-4cf4-9bcf-f2eb1082449f"
      },
      "source": [
        "pd_data1['Date'][0]"
      ],
      "execution_count": 10,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "Timestamp('1984-09-07 00:00:00')"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 10
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "gmeQNp4rvjvK",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "if (pd_data1['Date'][0]>pd_data2['Date'][0]): \n",
        "    #print(\"Date1 is older than Date2\")\n",
        "    pd_data1=pd_data1[pd_data1.Date>=pd_data2['Date'][0]]\n",
        "    pd_data1=pd_data1.reset_index(drop=True)\n",
        "else:\n",
        "    #print(\"Date2>Date1\")\n",
        "    pd_data2=pd_data2[pd_data2.Date>=pd_data1['Date'][0]]\n",
        "    pd_data2=pd_data2.reset_index(drop=True)\n",
        "    #print(\"Date2>Date1  and date2 is\" + str(pd_data2['Date'][0]) +\" Date 1 is : \"+ str(pd_data1['Date'][0]))"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "-nVMT1nwvjvR",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 297
        },
        "outputId": "e332b497-37ce-4fe1-cb85-490e76887081"
      },
      "source": [
        "pd_data2.describe()"
      ],
      "execution_count": 12,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Open</th>\n",
              "      <th>High</th>\n",
              "      <th>Low</th>\n",
              "      <th>Close</th>\n",
              "      <th>Volume</th>\n",
              "      <th>OpenInt</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>count</th>\n",
              "      <td>5153.000000</td>\n",
              "      <td>5153.000000</td>\n",
              "      <td>5153.000000</td>\n",
              "      <td>5153.000000</td>\n",
              "      <td>5.153000e+03</td>\n",
              "      <td>5153.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mean</th>\n",
              "      <td>181.747357</td>\n",
              "      <td>183.880652</td>\n",
              "      <td>179.466684</td>\n",
              "      <td>181.769343</td>\n",
              "      <td>7.837325e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>std</th>\n",
              "      <td>239.611052</td>\n",
              "      <td>241.226109</td>\n",
              "      <td>237.638139</td>\n",
              "      <td>239.548391</td>\n",
              "      <td>7.594745e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>min</th>\n",
              "      <td>1.410000</td>\n",
              "      <td>1.450000</td>\n",
              "      <td>1.310000</td>\n",
              "      <td>1.400000</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25%</th>\n",
              "      <td>35.500000</td>\n",
              "      <td>36.130000</td>\n",
              "      <td>35.000000</td>\n",
              "      <td>35.550000</td>\n",
              "      <td>3.779449e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>50%</th>\n",
              "      <td>70.900000</td>\n",
              "      <td>72.750000</td>\n",
              "      <td>69.020000</td>\n",
              "      <td>70.700000</td>\n",
              "      <td>5.902992e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>75%</th>\n",
              "      <td>242.850000</td>\n",
              "      <td>245.770000</td>\n",
              "      <td>240.670000</td>\n",
              "      <td>243.880000</td>\n",
              "      <td>8.888949e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>max</th>\n",
              "      <td>1126.100000</td>\n",
              "      <td>1135.540000</td>\n",
              "      <td>1124.060000</td>\n",
              "      <td>1132.880000</td>\n",
              "      <td>1.043288e+08</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "              Open         High  ...        Volume  OpenInt\n",
              "count  5153.000000  5153.000000  ...  5.153000e+03   5153.0\n",
              "mean    181.747357   183.880652  ...  7.837325e+06      0.0\n",
              "std     239.611052   241.226109  ...  7.594745e+06      0.0\n",
              "min       1.410000     1.450000  ...  0.000000e+00      0.0\n",
              "25%      35.500000    36.130000  ...  3.779449e+06      0.0\n",
              "50%      70.900000    72.750000  ...  5.902992e+06      0.0\n",
              "75%     242.850000   245.770000  ...  8.888949e+06      0.0\n",
              "max    1126.100000  1135.540000  ...  1.043288e+08      0.0\n",
              "\n",
              "[8 rows x 6 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 12
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "MNBz6Jz6vjvc",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "# Pre -Processing the Datasheet ...Drop Data that is not in both stock data- some days data is missing in Apple and some in Amazon\n",
        "import datetime\n",
        "#timestamp = data1_date[10]\n",
        "#print(timestamp.strftime('%Y-%m-%d'))\n",
        "list1= pd_data1['Date']\n",
        "list2= pd_data2['Date']\n",
        "diff_pd1_data = list(set(list1) - set(list2))\n",
        "diff_pd2_data = list(set(list2) - set(list1))\n",
        "#x11=x[0].strftime('%Y-%m-%d 00:00:00')\n",
        "#p=datetime.datetime.strptime(x11, \"%Y-%m-%d 00:00:00\")\n",
        "#print(p)\n",
        "for k in range(len(diff_pd1_data)):\n",
        "    pd1_dat_format=diff_pd1_data[k].strftime('%Y-%m-%d 00:00:00')\n",
        "    date_format_pd1=datetime.datetime.strptime(pd1_dat_format, \"%Y-%m-%d 00:00:00\")\n",
        "    for i, j in enumerate(list1):\n",
        "        if j == date_format_pd1:\n",
        "            #print(i)\n",
        "            pd_data1=pd_data1.drop([i])            \n",
        "pd_data1=pd_data1.reset_index(drop=True)\n",
        "\n",
        "for k in range(len(diff_pd2_data)):\n",
        "    pd2_dat_format=diff_pd2_data[k].strftime('%Y-%m-%d 00:00:00')\n",
        "    date_format_pd2=datetime.datetime.strptime(pd2_dat_format, \"%Y-%m-%d 00:00:00\")\n",
        "    for M, N in enumerate(list2):\n",
        "        if N == date_format_pd2:\n",
        "            #print(M)\n",
        "            pd_data2=pd_data2.drop([M])\n",
        "            \n",
        "pd_data2=pd_data2.reset_index(drop=True) \n"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "fmgmwM2uvjvl",
        "colab_type": "text"
      },
      "source": [
        "Now the data is clean, both Apple and Amazon have 5151 records"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "1n-kfJlgvjvo",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 297
        },
        "outputId": "24767106-43d5-4ea3-8623-d1238324cc6a"
      },
      "source": [
        "pd_data1.describe()"
      ],
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Open</th>\n",
              "      <th>High</th>\n",
              "      <th>Low</th>\n",
              "      <th>Close</th>\n",
              "      <th>Volume</th>\n",
              "      <th>OpenInt</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>count</th>\n",
              "      <td>5151.000000</td>\n",
              "      <td>5151.000000</td>\n",
              "      <td>5151.000000</td>\n",
              "      <td>5151.000000</td>\n",
              "      <td>5.151000e+03</td>\n",
              "      <td>5151.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mean</th>\n",
              "      <td>35.484689</td>\n",
              "      <td>35.816124</td>\n",
              "      <td>35.123519</td>\n",
              "      <td>35.479585</td>\n",
              "      <td>1.367661e+08</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>std</th>\n",
              "      <td>43.150378</td>\n",
              "      <td>43.473086</td>\n",
              "      <td>42.805762</td>\n",
              "      <td>43.153299</td>\n",
              "      <td>1.119530e+08</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>min</th>\n",
              "      <td>0.412350</td>\n",
              "      <td>0.423880</td>\n",
              "      <td>0.408530</td>\n",
              "      <td>0.413660</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25%</th>\n",
              "      <td>1.518700</td>\n",
              "      <td>1.552100</td>\n",
              "      <td>1.488200</td>\n",
              "      <td>1.521300</td>\n",
              "      <td>6.327315e+07</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>50%</th>\n",
              "      <td>12.362000</td>\n",
              "      <td>12.710000</td>\n",
              "      <td>12.060000</td>\n",
              "      <td>12.403000</td>\n",
              "      <td>1.075093e+08</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>75%</th>\n",
              "      <td>64.097000</td>\n",
              "      <td>64.834000</td>\n",
              "      <td>63.631500</td>\n",
              "      <td>64.308500</td>\n",
              "      <td>1.764941e+08</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>max</th>\n",
              "      <td>175.110000</td>\n",
              "      <td>175.610000</td>\n",
              "      <td>174.270000</td>\n",
              "      <td>175.610000</td>\n",
              "      <td>2.069770e+09</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "              Open         High  ...        Volume  OpenInt\n",
              "count  5151.000000  5151.000000  ...  5.151000e+03   5151.0\n",
              "mean     35.484689    35.816124  ...  1.367661e+08      0.0\n",
              "std      43.150378    43.473086  ...  1.119530e+08      0.0\n",
              "min       0.412350     0.423880  ...  0.000000e+00      0.0\n",
              "25%       1.518700     1.552100  ...  6.327315e+07      0.0\n",
              "50%      12.362000    12.710000  ...  1.075093e+08      0.0\n",
              "75%      64.097000    64.834000  ...  1.764941e+08      0.0\n",
              "max     175.110000   175.610000  ...  2.069770e+09      0.0\n",
              "\n",
              "[8 rows x 6 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 14
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ci0ivdU0vjv1",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 297
        },
        "outputId": "fd155e59-3289-4da0-ec69-40c3eff0ec6b"
      },
      "source": [
        "pd_data2.describe()"
      ],
      "execution_count": 15,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Open</th>\n",
              "      <th>High</th>\n",
              "      <th>Low</th>\n",
              "      <th>Close</th>\n",
              "      <th>Volume</th>\n",
              "      <th>OpenInt</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>count</th>\n",
              "      <td>5151.000000</td>\n",
              "      <td>5151.000000</td>\n",
              "      <td>5151.000000</td>\n",
              "      <td>5151.000000</td>\n",
              "      <td>5.151000e+03</td>\n",
              "      <td>5151.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>mean</th>\n",
              "      <td>181.812687</td>\n",
              "      <td>183.946772</td>\n",
              "      <td>179.531361</td>\n",
              "      <td>181.834821</td>\n",
              "      <td>7.835138e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>std</th>\n",
              "      <td>239.634626</td>\n",
              "      <td>241.249596</td>\n",
              "      <td>237.661600</td>\n",
              "      <td>239.571842</td>\n",
              "      <td>7.594587e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>min</th>\n",
              "      <td>1.410000</td>\n",
              "      <td>1.450000</td>\n",
              "      <td>1.310000</td>\n",
              "      <td>1.400000</td>\n",
              "      <td>0.000000e+00</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25%</th>\n",
              "      <td>35.500000</td>\n",
              "      <td>36.230000</td>\n",
              "      <td>35.010000</td>\n",
              "      <td>35.580000</td>\n",
              "      <td>3.777334e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>50%</th>\n",
              "      <td>70.940000</td>\n",
              "      <td>72.810000</td>\n",
              "      <td>69.020000</td>\n",
              "      <td>70.730000</td>\n",
              "      <td>5.901100e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>75%</th>\n",
              "      <td>243.035000</td>\n",
              "      <td>246.240000</td>\n",
              "      <td>241.015000</td>\n",
              "      <td>243.900000</td>\n",
              "      <td>8.888874e+06</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>max</th>\n",
              "      <td>1126.100000</td>\n",
              "      <td>1135.540000</td>\n",
              "      <td>1124.060000</td>\n",
              "      <td>1132.880000</td>\n",
              "      <td>1.043288e+08</td>\n",
              "      <td>0.0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "              Open         High  ...        Volume  OpenInt\n",
              "count  5151.000000  5151.000000  ...  5.151000e+03   5151.0\n",
              "mean    181.812687   183.946772  ...  7.835138e+06      0.0\n",
              "std     239.634626   241.249596  ...  7.594587e+06      0.0\n",
              "min       1.410000     1.450000  ...  0.000000e+00      0.0\n",
              "25%      35.500000    36.230000  ...  3.777334e+06      0.0\n",
              "50%      70.940000    72.810000  ...  5.901100e+06      0.0\n",
              "75%     243.035000   246.240000  ...  8.888874e+06      0.0\n",
              "max    1126.100000  1135.540000  ...  1.043288e+08      0.0\n",
              "\n",
              "[8 rows x 6 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 15
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "OvY11D84vjwI",
        "colab_type": "text"
      },
      "source": [
        "### Data Visualization"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qjV74D_pvjwL",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 417
        },
        "outputId": "78bc6400-094b-4def-c080-c098353d37c0"
      },
      "source": [
        "# Apple Stock Plot\n",
        "import matplotlib.pyplot as plt\n",
        "import datetime\n",
        "import numpy as np\n",
        "\n",
        "%matplotlib inline\n",
        "\n",
        "x1 = np.array(pd_data1['Date'])\n",
        "y1 = pd_data1['Open']\n",
        "y12= pd_data1['Volume']\n",
        "\n",
        "plt.title(\"Apple Stock Performance Over years\")\n",
        "plt.xlabel(\"Year\")\n",
        "plt.ylabel(\"Price in $\")\n",
        "\n",
        "\n",
        "\n",
        "plt.plot(x1,y1)\n",
        "\n",
        "\n",
        "ax2 = plt.twinx()  # instantiate a second axes that shares the same x-axis\n",
        "\n",
        "color = 'tab:red'\n",
        "ax2.set_ylabel('volume', color=color)  # we already handled the x-label with ax1\n",
        "ax2.plot(x1, y12, color=color)\n",
        "ax2.tick_params(axis='y', labelcolor=color)\n",
        "\n",
        "\n",
        "\n",
        "plt.show()"
      ],
      "execution_count": 16,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/pandas/plotting/_converter.py:129: FutureWarning: Using an implicitly registered datetime converter for a matplotlib plotting method. The converter was registered by pandas on import. Future versions of pandas will require you to explicitly register matplotlib converters.\n",
            "\n",
            "To register the converters:\n",
            "\t>>> from pandas.plotting import register_matplotlib_converters\n",
            "\t>>> register_matplotlib_converters()\n",
            "  warnings.warn(msg, FutureWarning)\n"
          ],
          "name": "stderr"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaoAAAEWCAYAAAA3h9P4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzsnXecG8X1wL/visu5N2xs426QbMBg\nDKb33gnV9M4PQhJCQgKBgKmhJIAhNEPAOPTeTA8dY4MB4yYZt7N9Z/tsX/H1otP8/tiVbiWt6kkn\n6TTfz0cf7c7OzszuSvN23rx5T5RSaDQajUaTqeSluwEajUaj0URCCyqNRqPRZDRaUGk0Go0mo9GC\nSqPRaDQZjRZUGo1Go8lotKDSaDQaTUajBVWOIyIXisg36W5HJETkCxG5NE113yEiW0VkUzrq12g0\nWlBlFWaHXSkiXdPdFgARmSgiH4tIhYhUiciPInKseexgESlJQ5uKRaRBRGpFpExEZolIzwTLGgH8\nCZiglBqS3JZmLiLSV0QeE5FNIlIvIotF5KJ0t0uTu2hBlSWIyCjgAEABJ6a1MW28C3wCDAG2A34P\nVKe1RQYnKKV6ApOBKcBN8RYgIgXACKBcKbU5wfOzDhHpAnwKjAT2AfoA1wF3i8i1KagvbfcpW59R\nLqIFVfZwPjAPmAVcYD1gjhoeF5FPRKRGRL4UkZGW40pEfi8iq0011n0iYvvsRcRhllMhIstF5Iww\n+QYCo4EnlVLN5udbpdQ3ItID+AAYao5sakVkqIh0FZEHRWSD+XnQOjoUkZNEZKGIVIvIKhE52qbe\n7UVkkYhcF+2GKaVKzXbsbJ7bR0T+IyIbRaTUVOvlm8cuFJFvReQBESkHvsAQwr5rmGXmO1FElpoj\nyC9ExGlpW7GI/FVEFgF1IlJgpl1ntrnOrH+wiHxgPqtPRaSfpYxXzZHMNhH5SkQmBj3nR0Rkjnnu\nfBEZazk+0fLsykTkb2Z6nohcb97TchF5RUT6h7lt52EI6NOVUmuUUi1KqQ8xXkJuE5He5jW+FvRc\nZojIQwnc5+lB5QwxR3EDLGmTRWSLiBSa+xeLiEsM7cJHQb/1GSKy3vwN/SgiB1iOTReR10TkORGp\nBi4Ukb1EZIGZv0xE7g9zXzTpRCmlP1nwAVYCVwF7AC3AYMuxWUANcCDQFZgBfGM5roDPgf4YndCv\nwKXmsQt9eYEewHrgIqAA2B3YiqH6Cm6PACuA94CTre0xjx8MlASl3YYhbLcDBgFzgdvNY3sB24Aj\nMF6ghgEO89gXwKUYgvFX4PII96kYONzc3gFYaqnjTeAJ8zq3A74HrrDcBw/wO/PauwdfA7AjUGe2\nsRD4i/lculjqXmjW292SNg8YbF7TZuAn8952Az4DbrHUcTHQy3yODwILg55zuXmvCoDngZfMY72A\njRiqym7m/lTz2B/MNgw3y30CeDHM/XsJeNYmvcC8P0dhjLbqgV7msXyz7r0Tuc82db0PXGnZfwB4\n2Nw+ybznTvP8m4C5lrznAgPMY38CNgHdzGPTMf47J2P8xroD3wHnmcd7+q5BfzLrk/YG6E8MDwn2\nN/9gA819N/BHy/FZvg7L3O8JtAI7mPsKONpy/Crgf+b2hbQJqjOBr4PqfsLakQYdGw78G1gFeIGv\ngPHmsYMJFVSrgGMt+0cBxZZ6HghTzxfA/Rid/rQo96oYqAWqgLXAo2aHNBhosnaMwDTgc8t9WBdU\nVsA1AH8HXrHs5wGlwMGWui+2ac85lv3Xgccs+78D3gpzLX3NZ9fH8pyfshw/FnBbruXnMOW4gMMs\n+9ubv6cCm7yfAneHKWeT71qAb4Dzze0jgFXmdtz32aaeM4Fvze18s969zP0PgEuCnkE9MDJMWZXA\nJHN7OvBV0PGvgFsx/1uZ/lm2k+PpZTs5Ni/bybEkhrwjl+3k+N+ynRyLlu3k+GLZTo7h6W5/oh+t\n+ssOLgA+VkptNfdfIEj9hzESAkApVQtUAEPtjmN04NZjPkYCU021VpWIVAHnYMxBhaCUKlFKXa2U\nGmueWwfMjnAdQ8267dqxA4YgC8c5GELhtQh5fJyslOqrlBqplLpKKdVgtq8Q2Gi5ticw3vh9rLcr\nLFz7lVJe85xhUcoos2w32Oz3BBCRfBG521TRVWMIOYCBlvxW68N637lEvn8jgTct1+3CeJEZbJN3\nK4YgC0CM+ZyB5nEwfoPTzO2zzX1fXe29z28DE0RkNIYQ3KaU+t5S/gxL2RUYo/thZjv/bKoFt5nH\n+xB4/4LrvgRjpOwWkR9E5PgobUs3s4AQlXgY/gnMdrpdu2JoM/6RqkalGj2ZmOGISHfgDCBf2kyk\nuwJ9RWSSUuoXM20Hyzk9MdR8GyxF+dRgYKj/rMd8rAe+VEodEW87lVLrReQR4EVfkk22DRgdjV07\n1gNjbc7xMR3jD/qCiJyllGqNs4nrMd70ByqlPGHyRAslsAHYxbcjIoJxX0vjKCMSZ2Ootg7HEFJ9\nMEYEEsO564GzIhy7WCn1bQzlfArcJSI9lFJ1lvRTMe7fPHP/VeBfIjIcOAXD8MJXV7vus1KqUURe\nwVDjOYD/Bl3LnUqp54PPM+ej/gIcBixVSnlFJPj+BdStlFoBTBNjzvY3wGsiMiDo2jMGp9v1lcvh\nHGVNczmcY4FHMNTp9cBlTrfLDUwAfAYwnwNvdWBTk4oeUWU+J2O8/U4AdjM/TuBrDAMLH8eKyP5i\nWG3dDsxTSlnfHq8TkX4isgPGnMXLNnW9B+woIueJSKH52dNqMODDLOtWERlnTtYPxJhf8XVkZcAA\nEeljOe1F4CYRGWTmvxl4zjz2H+AiETnMLG+YiDgs57YAp2PMe8yWMMYg4VBKbQQ+xuhce5t1jBWR\ng+Io5hXgOLONhRhzIE0Yc23JoJdZXjlQBNwVx7nvAduLyDViGK30EpGp5rHHgTt9Rgfm/T8pTDn/\nBUqAV0VklPkbOAp4CJiulNoGoJTagqGSfQZYo5RymenJuM9gjMwvxLBwtQqqx4EbxDQyMQ03TjeP\n9cKY/9oCFIjIzUDvSJWIyLkiMsgcHVeZyd4425puZgK/c7pdewB/xlB3A/yCIXzBeJno5XI4B9ic\nn/FoQZX5XAA8o5Rap5Ta5PtgzA2dI20mti8At2CoQvbAeBu18jbwI8Zk/xwMwRCAUqoGOBLjzXwD\nhprpHowRXDDNwCiMN/BqYAlGJ3uhWZYbQzCtNtU0Q4E7gAXAImAxhlHBHWb+7zGMOB7AMKr4EmP0\nZW1fM8YfbzDwdLzCCkOwdwGWYYxUXsNGzRUOpdRyjPv6MIYK7AQMU/jmONsRjtkYqsVSs43zImcP\naFsNhprsBIzntgI4xDw8A3gH+FhEasxyp4YppwljRLcemI/xbO8HblRK3ReU/QUz7wtB6e26z2Y7\nvsUQGD8ppazq1jcxfpMvmerRJcAx5uGPgA8xDG7WAo1EVzMeDSwVkVqM+3SWqSrOClwOZ09gX+BV\nl8O5EEPN6rvXfwYOcjmcPwMHYfyu4tVEZASilA6cmO2IYTpdopSyXS8kIgrDyGFlhzZMo2kHIvIZ\n8IJS6ql0tyWTMFV/7zndrp1dDmdvYLnT7Yr4ImAKNLfT7RreEW1MNnpEpdFoMg4R2RNjwbadilpj\n4nS7qoE1LofzdACXwykuh3OSuT3Q5XD6+vgbgKfT1Mx2owWVRqPJKETkWQyV8jWmSlNj4nI4X8RY\n+7WTy+EscTmcl2BYxF7icjh/wTBU8s0/Hgwsdzmcv2Koy+9MQ5OTglb9aTQajSaj0SMqjUaj0WQ0\nWb2OKi8vT3Xv3j3dzdBoNJqsor6+XimlsmagktWCqnv37tTVZeS6PI1Go8lYRCRrTPBBq/40Go1G\nk+FoQaXRaDSajEYLKo1Go9FkNFpQaTQajSaj0YJKo9FoNBlNygSViDwtIptFZIkl7WUxQo0vFCNE\n90IzfZSINFiOPZ6qdmk0Go0mu0ilefosDA/f/kB6Sqkzfdsi8i8ML9k+VimldkthezQajUaThaRs\nRKWU+goj5EQIZsC5M2gLsqdJkG1z5tBaXZ3uZmg0mg7kmW/XMGfRxnQ3o8NI1xzVAUCZGV3Tx2gR\n+VlEvjQjddoiIpeLyAIRWeDxhAsgmhs0rVrFhj/9mQ3X35Dupmg0mg7k2bnFfLxsU/SMnYR0Capp\nBI6mNgIjlFK7Y4ROfkFEbCNzKqVmKqWmKKWmFBRktWONduNtaATAsyl3frAaTa6jlKK4vB6PN3cc\nine4oDIj0v4GS5wZpVSTUqrc3P4RWAXs2NFt02g0mkxncakxta9Vf6nlcMCtlCrxJYjIIBHJN7fH\nAOOB1WloW1aiyJ03K40m1xEk3U3ocFKmOxORFzECdw0UkRLgFqXUf4CzCDWiOBC4TURaAC/wf0op\nW0MMjYXc+71qNDlPlwJjfHHxfqNTVofL4dwBw2J7MKCAmU63a0ZQHgFmAMcC9cCFTrfrp1S0J2WC\nSik1LUz6hTZprwOvp6otnR49oNJocgaP1wvA1DH9U1oN8Cen2/WTy+HsBfzocjg/cbpdyyx5jsHQ\nfo0HpgKPmd9JR3umyGIMK3+NRpNLeFqNN9OCvNT9/51u10bf6MjpdtUALmBYULaTgNlOt0s53a55\nQF+Xw7l9KtqjBZVGo9FkET5rv4L8dnXfBb5lPubn8nAZXQ7nKGB3YH7QoWHAest+CaHCLCnktn13\nZ0Fp3Z9Gkyu0epMyovIopaZEy+RyOHtiTMtc43S70uZZQI+oshmt+tNocg5PqzFHlZ9C1R+Ay+Es\nxBBSzzvdrjdsspQCO1j2h5tpSUePqDQajSaL8Kn+CvNTJ6hMi77/AC6n23V/mGzvAFe7HM6XMIwo\ntjndrpQs7tKCqjOgVX8aTaenydOK19tm9Zefl1KF2H7AecBil8O50Ez7GzACwOl2PQ68j2GavhLD\nPP2iVDVGC6psRqv+NJqc4biHvmHl5lpmnrcHkHKrv2+IslLT6XYp4Lcpa4QFPUel0Wg0WcDKzbWA\nxZgihaq/TEMLqs6AVv1pNDlDVUMLkNoRVaahBVU2o1V/Gk1O8ENxm0e5Bz/9FYCC1M5RZRS5c6Wd\nGT2i0mg6NU982eaju6y6CUi9eXomoQWVRqPRZDgL1ob66NZzVJrsQqsANZpOTVV9S0iaVv1psgut\n+tNocg5tTKHJEnLnh6rRaALRqj+NRqPRZBzdCvMs2/lpbEnHogVVp0Cr/jSazoRSiqe+Xs2WmqaA\n9GaP179d2L4wH1lF7lxpZyR3Rv4aTU6xpLSaO+a42PPOT1lbXudPN51S8Pi5k9PUsvSgBZVGo9Fk\nGGXVjf7t+z/5ld7dCrhw31H+tC4FudV1p+xqReRpEdksIkssadNFpFREFpqfYy3HbhCRlSKyXESO\nSlW7OiNKW/1pNJ0Kn4d0gIq6ZqobPXy+fLM/bfKIfuloVtpIpVieBRxtk/6AUmo38/M+gIhMAM4C\nJprnPCoiuTNTmCCi109pNJ0Sr+Xd0ze6Wlte70/rW9Slo5uUVlImqJRSXwGhy6ntOQl4SSnVpJRa\ngxHfZK9Uta3ToQdUGk2nwqokqW7wpK8hGUI6FJ1Xi8giUzXoG78OA9Zb8pSYaZpI6BGVRtMp8Vok\n1SbLfFWu0tGC6jFgLLAbsBH4V7wFiMjlIrJARBZ4PPpNQ6PRdD6sc1RW9hs3AMeQXh3cmvTToRF+\nlVJlvm0ReRJ4z9wtBXawZB1uptmVMROYCdCjRw+t9ALtQkmj6WS0eOz/089funcHtyQz6NARlYhs\nb9k9BfBZBL4DnCUiXUVkNDAe+L4j25aVaNWfRtMpaW4NHVG9e/X+aWhJZpCyEZWIvAgcDAwUkRLg\nFuBgEdkNY/q/GLgCQCm1VEReAZYBHuC3SqnWVLVNo9FoMpk1W+sC9of26cYuw/ukqTXpJ2WCSik1\nzSb5PxHy3wncmar2dGq06k+j6VT855s1AfsbtuW2QUVuLW/WaDQaTdahBVVnQM9VaTSdigPGD6R/\nj9xa1BuJDrX606QIrfrTaDoNJ/77GxaVbEt3MzIKPaLKZvRISqPpVHi9ylZI5VI0Xzv0iEqj0Wgy\nhEZPm7Hz1YeM46pDxvLC/HXsN25gGluVfrSg6gxo1Z9G0ym4/b1l/u2WVi9FXQq49IAxaWxRZqBV\nf1lNbqsDNJrOxovft7k8nTC0dxpbklloQdUZ0CMqjSbr2VbfErB/4qShaWpJ5qEFVTajB1QaTadh\nYUmVf/v3h43X8eYsaEGl0Wg0GcAAy7qpaw4bn8aWZB5aUHUClI6cqNFkPS//YMxPPTxtd/Jy3Bw9\nGC2oshitGtBoOg//nbcWgMJ8/b8ORgsqjUajySB2Hd433U3IOLSg6gxozZ9G02kY2rd7upuQcegF\nv9mMVv1pNJ2GKSP70bVQjx3s0HdFo9FoMoDyumb6dtce0+3QgqozoBf8ajRZz6ZtjWzfp1u6m5GR\naNWfRqPRpBmlFA0trRR1zYwu2eVwPg0cD2x2ul072xw/GHgb8IUifsPpdt2WqvZkxl3RaDSaHKbJ\n4wWgW+bMUc0C/g3MjpDna6fbdXxHNCZj7oomAbQxhUaTUp74chUH3PtZyutpaDbCe3QvzE95XbHg\ndLu+AirS3Q4fKRNUIvK0iGwWkSWWtPtExC0ii0TkTRHpa6aPEpEGEVlofh5PVbs0Go0mGss2VNPS\n6uUfH7hZX9HAi9+vo6G5lXOfms+Kspqk11fX7AEyR1DFyD4uh/MXl8P5gcvhnJjKilI5opoFHB2U\n9gmws1JqV+BX4AbLsVVKqd3Mz/+lsF2dD21ModEkjTVb6zj2oa+55wO3P+2GNxbz9sJSvlm5lTvm\nuJJeZ1l1EwCDO86YokBEFlg+l8d5/k/ASKfbNQl4GHgr+U1sI2WCSikVMnRUSn2slPKYu/OA4amq\nPyfQqj+NJulsrm4E4BeLN3OAD5duAlIzj9Tsm6Mq6LARlUcpNcXymRnPyU63q9rpdtWa2+8DhS6H\nM2VhiNM5R3Ux8IFlf7SI/CwiX4rIAeFOEpHLfW8BHo8nXDaNRqNJiJZWQ0MR7Etz/mrjvbtbCtRz\nXlMrUpAlfv5cDucQl8Mp5vZeGLKkPFX1pcXqT0RuBDzA82bSRmCEUqpcRPYA3hKRiUqp6uBzTck/\nE6BHjx5a5wVa9afRJJEmj2HY8P2aQFuChhYjPRWjHo/X+A/nZ4jXdJfD+SJwMDDQ5XCWALcAhQBO\nt+tx4DTgSpfD6QEagLOcblfKOqIOF1QiciGGff5hShk9rFKqCWgyt38UkVXAjsCCjm5fVqFVfxpN\n0vEJpHCkQvXX6jVUfwUZIqicbte0KMf/jWG+3iF0qOpPRI4G/gKcqJSqt6QPEpF8c3sMMB5Y3ZFt\n02g0GgCJEjq7awpUf57WzBpRZRopG1GJiH/oKCK+oeMNQFfgE1P/O8+08DsQuE1EWgAv8H9KqYyx\n4c94tOpPo0kaVQ3NEY93K0j++31FnVFnQZ5e2mpHygSVUspu6PifMHlfB15PVVs6L/rtS6NJNr7F\nt+FYvbUu6XVe/8ZiQGvzw6HFdydAh6LXaJKHz52RlXOmjvBvv7doY0c2R4MWVFmNfvvSaJJPU5Ax\nxePn7sGtJ9o7Xrhs9gJue3dZ0urecXCvpJXVmdCCSqPRaCwEj6iO3nkIBfn2XeUny8p4+ts1tsdi\nZUtNU7vOzwW0oOoMaM2fRpM0Gi0jql2H90lJHdsaWthQ1QDAoiAPGJpQtKDKZrTuT6NJOo0txojq\npuOcvHnVfv70udcfCkCvbgVmvjaBVt3YElcdk279mH3v/owNVQ1c8qyxXHT2xXu1q92dGS2oshlt\nlq7RJJ2f1lWSnydcesCYgHVNQ/t25+ypI+hqmqf7vEkA7Dr9Y1q98f8fF6yt9G+PHFDUjlZ3brSg\n0mg0OU+rV/kdw67YXBtW6OSLUNtk+Bj1tAbOZflcL8WDsrxsDuzZNe7zcwUd4Teb0ao/jSYpjP3b\n+wAU331cxHyfL99MY4uXn9dVsmxjoCvSrTXNjBgQvUs9+8l5/u1Sc55q+gkT6JEhYegzEX1nNBqN\nxiSaBV5JpSFYTnl0bsixFm/o+is75q5qczJeapY3dcyAWJuYk2jVX2dAz1VpNEnBZxRxxUFj4j43\nmkcLOxaVbAOgf48ucZ+bS2hBpdFochrrfJTPOewuw+I3S2+M4nXdjsWlhqAq6pJVIeg7HC2oOgN6\nRKXRJEyzZYHvis01QGLOYYPDg8QzwirqomdhIqEFlUajyWlqLGug3l64AYDCBCLtWue3lm7YhvPm\nD/lgsb1fwL1G9Q/Y1+E9IqMFlUajyWms3tA/WVYGtM0dBTNh+95hy1m6oc0K8MtftwCGlaCP2iYP\nFz3zPQB7jwkUVJrIaEHVGdCqP40mYexGM6u21Nrmffd3+4ekTdqhLwB9uhf60+79cDkQGITxya9W\n8/lyQ4DlWepMxHAj14gqqERkoogMMrcHiMhTIvKSiExIffM0Go0mtdTYuD+66uBxtnnthNobV+5L\nYb5Q1+yJWM+M/63wb1fVt9V51UH2dWnaiGVE9YRl+05gE/Am8HRKWqTRaDQdSFNL6Pqngb1iNxfP\nzxNaWhVPfLk65Njwft3928ftsr1/e41F3ViQwHxYrhHR1EREbgHGAleKETv+FAwB5QCGi8jNwBdK\nqa9S3lJNeLTqT6NJmObWUEHVvTA2c/EjJgy2TR81oIji8vqAwAZdC9vGBR6vlwU3Hc6S0m3aI0UM\nRLxDSqlbReRE4FlgMHCgUuoGABE5Qil1Wwe0UaPRaFLGH15aGJLWLUZBddkBgfNLSil+KdlGcXk9\nEORhvaFNNdjiUQzs2ZWDd9oukSbnHLGo/u4AvgNeAW4CY94K2BzpJDPf0yKyWUSWWNL6i8gnIrLC\n/O5npouIPCQiK0VkkYhMTuiKNBqNpp0UhgmUaKX47uPYa7RhvbfzMMMasMnj5aa3FvvzrKuo92+7\nLL4BY3W3pDGI+jSUUm8qpYYqpUYppb4z05YqpX4TQ/mzgKOD0q4H/qeUGg/8z9wHOAYYb34uBx6L\n7RI0SkdO1GgSZtLwPhy446B2leHeaCwUfvXHEk7ebZg/3be2Sinld0ALbR4wcgmXwznS5XAebm53\ndzmcvWI9N6Xm6ebcVUVQ8kkYqkTM75Mt6bOVwTygr4hsj0aj0aSQbQ0t9LWYlt90nDPuMnyxqarq\nmulixqvarldX/yukbxr5qInGnNb47Xom3uAsxOVwXga8Rptx3nDgrVjPT8cs3mCllG+59iaMuS+A\nYcB6S74SMy1gabeIXI4x4qJLl+Q4cmxYvJiC/v0pHDYsemaNRtNpUEpRXF7PzsP68PPfj6BH1wK/\noIkHEUMYNXm8zP5uLWAEWvT5EfSakmri0D5ctN9oJg3vm7yLyA5+C+wFzAdwul0rXA5nzBN0aV3w\nq4yoYXGNgZVSM5VSU5RSUwoKkiNni08/g5WHHZ6UsjoUbe2n0bQLnzpu3uoK+vXokpCQAtjVFDz9\ne3Rh5WZjsXBRl3y/gPL9UwXYe8wAuueeE9omp9vV7NtxOZwFxNH3x/xURCRfRIaKyAjfJ86G+ijz\nqfTMb59RRimwgyXfcDNNo9FokopSil/WV9ForqH64xHj21XeHw83zr/tvWX+tML8PJpavGyoavA7\nrG3N3ZfLL10O59+A7i6H8wjgVeDdWE+OaUgiIr8DbgHKAJ+5igJ2ja+tALwDXADcbX6/bUm/WkRe\nAqYC2ywqQk0kcva3r9Ekxks/rOeGN9qs8/p2b980QrC39Z5dC8jPE5ZtrGbfuz/zWwW+9XMp1xy+\nY7vqylKuBy4BFgNXAO8DT8V6cqy6sz8AOymlyqPmtCAiLwIHAwNFpARD2N0NvCIilwBrgTPM7O8D\nxwIrgXrgonjq0mg0mlixCilov3eIYMvb8/cZya9lbf4Cl5QapuktOWjtB+B0u7zAk+YnbmIVVOsB\ne3fCEVBKTQtz6DCbvApjwk2j0Wg6lC4xrJuKRJ4ECrquBfnYFZnoHFi243I4jwduB0ZiyB0BlNPt\nCu+O3kKsgmo18IWIzAH8QVeUUvfH11xNSshdvbdGkxRiWeAbickj+gXsr6uot3Vgu0P/onbVk8U8\nCPwGWOx0u+LusGIVVOvMTxfzo9FoNFnJ+zbBDBMJlGgl2Ipv47YG+vcI7SofPmv3dtWTxawHliQi\npCBGQaWUujWRwjUajSbTuOr5n0LSCto5ogpm8oh+fL8m2NcB9CkqtMmdE/wFeN/lcH6JRSvndLti\n0spF857+oFLqGhF5FxvbMqXUiXE2VpMKtOpPo4mbEf2L/L74BtiMftpD9y75fF8cKKhyPNz8nUAt\n0I0EtHLRRlT/Nb//GW/BGo1GEwter+Ivry/i78dPCIiSmwre/WWDf/vMPXfghfnrKK1qSIoQGdiz\nC1trjTWtu+8Q6nni4v1GtbuOLGao0+3aOdGTI453lVI/mt9f2n0SrVSj0Wh8/Pvzlbz2YwnXvPRz\nyuv63YttdWyubvTHk+rdLXYBuXj6kSyefmRI+gxz/qlLfh77jhvIh9cc4D/Ws2sBF+8/OtFmdwbe\ndzmcoTctRnTErs6AVv1pspgi0xBhRIot4mZ+tSpgf0if7lx2wGiuOnhsXHNHvcIItf3GDWTFnceQ\nb5qqD+jRFTCE1JJbj0qw1Z2GK4E/uxzOJqCFFJmnazQaTUr48tctHVLPXe+7A/Yv2m8UBfl5bNe7\nW9LqsDNzz9W1U1acblfMIT3siEtQiUiRUqo+ek5Nh6JHVJosZUnpNr5esRWAZ79by60nJTyNERef\nXntgzFF8E6VP90J6di3g5uMnpLSeVOByOJ8Gjgc2280tuRxOAWZgeBOqBy50ul2h5pRt+Q+0S3e6\nXV/F0p5Yff3ti+GXqScwQkQmAVcopa6K5XyNRqOx46Uf1nV4nfl5wrjt2vWCHxNdCvKyWeU3C/g3\nMDvMcWug26kYgW6nRijvOst2N4yQHz8Ch8bSmFhHVA8AR2E4jkUp9YuI2EpIjUajiZXn5nWMoNrW\n0NIh9XQWnG7XVy6Hc1SELCcBs80FvPNcDmdfl8O5vdPtsnUk7nS7TrDuuxzOHTC8VcREzMpTpdT6\noKTWWM/VpBit+tNkKfuOHdBuWLHbAAAgAElEQVQh9ZRVN/q39xs3sEPqzHAKRGSB5XN5nOeHC3Qb\nKyVAzKGUY3ZKa6r/lIgUYnhTd8XRKE0K0PJJk+0cstN2zF1VzjlTR/D8/HUs21DNhKExGYLFRVW9\nMaIa0b+IR87OWTdGVjxKqSkdVZnL4XyYNqcRecBuQNg5rWBiHVH9H4Zn82EYwQx3Q3s6zxwkp1e8\na7IEpRQq6O1qW0MLeQLPzzdUgMc+9HVK6q6sNxbiPnrO5LDm5Zq4iDfQ7QKMOakfge+AvzrdrnNj\nrSxWX39bgXNiLVTTweihlSYL2HX6x4zZridv/3Y/f1pFfTP9irrQ0uqlutGTsror6wxB1S/JrpJy\nmHeAq10Opz/Qbbj5KQCn2/VseyqL1ervWeAPSqkqc78f8C+l1MXtqVyj0eQONU0efllfFZC2raGF\nPt0LOXvqCO6Yk7rZhEpT9de/SAuqWHA5nP6gty6H0xf0thDA6XY9ToyBbl0O52LsY5D7FvzGFCU+\n1jmqXX1CCkApVSkiWtGbBJRStKxfT5cRI9LdFE0H4Nm6lZpPPqHftHAxRTsn2+rtre7mLNpIn+6F\nnLfPyJQJqprGFu750FjsGxyOQ2OP0+2K+AM1rf1imf45PhntiXWOKs8cRQEgIv3RXi2SQtXLr7Dq\nyKOo/ylxP2da8dexrDzqKEqu+WNC55Ze80c23XobTWvWJLlVmc2nrjL/dmNLK7VNHibe/CFgjKq6\nFqROgMxdVZ6ysjWRcbpda30foBHYxfw0mGkxEaug+hfwnYjcLiJ3AHOBe+NttCaUhl9+AaA5xzqu\nbKZl7TpqPvwwoXM9VZXmRurmYzKRp79t+33f99FylpZuo67ZWOHyu0PHpbTu77SgSjsuh/MM4Hvg\ndOAMYL7L4Twt1vNjNaaYLSILaFtF/Bul1LJ4GwsgIjsBL1uSxgA3A32BywCf46+/KaXeT6SOnEMb\nU2QPOfqolm6o9m+vr6hnwdpK//7IAT0AOGm3ofy8roq6Jg89uiZPYeMzd3/+0kiOEzQp5kZgT6fb\ntRnA5XAOAj4FXovl5IgjKhHpbX73BzYBL5ifTWZa3CilliuldlNK7QbsgTER96Z5+AHfMS2kNJrO\nSWlVA4N6dvXv+2JQDenTjXUV9Uy85aOAuFHx4LPus+L1Gm8Howf2SKhMTVLI8wkpk3LicDgR7bXl\nBYzJsB8JfBcUc39MrBWF4TBglVJqrei1QJo4UUrRunUrBYMGpbspmjjYUNXAX15f5N/v3c3ohuat\nbouI+/S3azhh0tC4yv1i+WYufOYHBvXqyvwbDiPPDIZ401tLAJI6StPEzQcuh/Mj4EVz/0wMy8GY\niBY48XgxJMhBSqkxls9opVR7hRTAWbQ1HOBqEVkkIk9bjTc0UchR1V/FM7NYccCB2WmYkMMvZpVB\nFoC+WFA79OvuTztm5yFxl/uN6YV9S00TJZUN/nSPOaLyCURNWtgMPEebMcVMp9v111hPjjr0UsZS\n8jkJNy8MItIFOBF41Ux6DBiL4fViI4YBh915l/v8U3k61YR0bgqb9lD3zTcAtJREWhCvyXR80XXP\n3XukPy2REBwDLOrEUx791q/yu2CfkfTpXojW2qSVHsD1GF7T12AY5MVMrDrCn0RkzzgbFo1jgJ+U\nUmUASqkypVSrUsoLPIlxQSEopWYqpaYopaYUFHSCNyT952k/+h5mNMFuk6zsNbo/2/UyBExhfttz\nbPXG/+Jm/RmU1zUz5m/vM/OrVTz73Vry9E8krTjdrludbtdEjLVX2wNfuhzOT2M9P9aefipwrogU\nA3WYc1RKqZhWFYdhGha1n4hsr5TyueA4BVjSjrKzh2So7XJU9adHodlBk8cLGCHZa5vatCBv/3Y/\nJu3Q17+fn9f23uzaWE1NY0tcfvnqmkI1LL6ovjUpdM+kiYvNGIZ55cB2sZ4Uq6BKavQvEekBHAFc\nYUm+V0R2w+h9ioOO5QD6lS9hsunW5eBLhU9QXXXIWO79cLk/3SqkAJpa2iIHvbKghCWl1bz/hwNi\nqqOyrplN2xrDHvckMELTJA+Xw3kVxvqpQRjTPZc53a6YlzhFFFQi0g3Dc/o4YDHwH6VUu19NlFJ1\nwICgtPPaW64mt4ikUsp4ckhd+cMaw5qvqDCfvx3r4K733Vx2wOiQfA0tgSHulm2sDskTjt1v/wSA\nXl0LqLEZWWnSzg7ANU63a2EiJ0ebo3oWmIIhpI4hjIGDJs1kc4fdHszL1pPkmc2lsxcA8PP6KvLM\nZ9XqDc03ZmDPdtdV0+ThsXMmt7scTXJxul03JCqkILrqb4JSahcAEfkPhgsMTUpIRNjkqIAKRguq\njKZP90K2NbTQo2uB3ymsnXHDiAFFCZUfPLI+amKbaXtBnuDxKsZv134hqEkf0QSVf8GDUsqj31xT\nQDLuqX4umgzGZ+RQVJjPcbtsz/drKrjioLHtLndbQwvVDS0BMabuOXUX/0JfgGW3HU2XgpgdIGgy\nlGiCapKI+BTFAnQ3931Wf8mPGa2Jn5xV/eXodWcZI/oXsXprHXuPGUDfoi7MOCt8hKDP/nQQh/7r\ny5jKnXTrxwBccaDhe+Cfp0/itD2GB+TRQqpzEM0zRb5Sqrf56aWUKrBsayGVDHRnGxeVr7xCy2bT\nZZjyT1IB0FpdjWfLljBnatJBS6uX1VvrADh8wuCo+ccMClTRLSiuCJOzjSe+Wg3AkN7dEmihJhvQ\nrxsZQzvUdzki7Fo2bWLTzbdQclVwvDbj3q08+BBWHHBgxzcsHnLkWfnYUNUQPVMQT184xb992uPf\nxXxe36K2NVd7j+nP9BMmxF23JjPRgkqTNSjTZVZrpRkiIqjT99bXhz23tbaOLQ89hGqxjzTb4eTI\nvGJji415XxQOdbSNvEb0j93AYqDFhdJLl+/DhfuFmsBrshMtqDKG3HrTTioxdPpbH36IrY8+xrZ3\n3g05prxeNt//AJ6tW1PROntyZGQVvDYqVp67xIgddf4+I8Pm8ble8jGkj1b9dVa0oEo3SXizzo0u\nj9DOPY7O3ttgeC2wG1HVz5tH+cyZbPz7ze1qXjLxNjez9fHH8TaHxlfKJlrMBVOnTh4eJWcgE81g\nh3fMcVFe22Sbx+q49o+H75hgCzXZgBZUmqzD29wUGNqjnbJemZ2p6kihEOUFpfK/z7HlwRlUPPts\nBzUoNTSY4ean7bVDXOdZTcw/XlYWcrzZ42VdRZuq94w94xOEmuyiE7gfTx+uCRPpddSRDH/ggXQ3\nJTfwWfdt2crqY46l267t8YlspQPHpDGOAr0NhhGCagjvvy4bqDcFVVGX+Loa64LgG95YTPHWOgb0\n7MLogT05YsJgflpXGZC/W0H8YUE02YMWVO3B66Xmgw8h3YIqR+Y7Qq7TNK6IbyF6ltyrTvJM65vN\nxb5d4hMk+UGuK3wm6AAvXrY3lfWBo988HcejU6NVf+mmk3RIaaUzW9Bl+bXN+N8KAAYGGT5EIy/C\ndU97ch5VZpTgHQcb664KtKDq1OgRlUbjo0OFQm50rGvLjXmknl3j62qiCZ7P3Ma81XOXTqW0soEe\ncZavyS700003yegc9agsOhk3MtHPLBIF+ZGVPZ+6DO8kg3p2Zbte2iy9s6NVf5qsRRHoQilhvPEv\nSgVj/VXcVdXVmVuZJjhTR7yjqXjQjrJzAy2oOgO5MqIKc51bH3mUxl9/TbjYsvvuM4pvsl+vEw5v\nTU3YY0optjz0EC1lmwPSfb4IJcqIoTM802Yzsu9BOw1K6PwVdx6TzOZoshgtqJKEam2lYvbsrF+g\nmU2IOSqpmzuXteecG9e5jct/pfbrbwBoXrkKAG+cgipi+YsXs/XRx9hw3XX2GfIi//W8jYZZeu3n\nnyetTalmW0MLc1duZeM2w7T++Ie/BmDOoo0JlVeYn8fVh4wLSLN6R7/7N7sk2FJNtqEFVZKoeuMN\nyu76B+VPzOy4SjvBW3dcBKl5PBVtnrXj9eG35qSTWH/ZZUltjxXVaqwf8jaFWQcVRWXVUlICQOOy\nZZnjnzACjS2tTLr1Y85+aj4XPfMDAL+W1QLwt2MdCZd77RE7suy2o/z7J04a6t8+1LldwuVqsgst\nqJKEb+7BWxteHRSRXBM6iRB0jzybNqWpIdGJNncSdW7Fohqs/uCDZDQppfg8UAC4Nxn/gW6FeXQv\nzOfyAxMPkpiXJwGLha3+/LQRRe6QNqs/ESkGaoBWwKOUmiIi/YGXgVFAMXCGUqoyXBkaTVJJ0rz8\nykMPo2XDBmMn3PtHNEGW3/bX9Ll4ykRavYofiisYFxTq/btV5Ql5To/GYC2ccpJ0m6cfopSyuqy+\nHvifUupuEbne3P9repoWJ+0dEGnrpewjzDPzC6lIRBtBZ8kC1hMe/oZlG6vZd+yAgPRpT84D4HeH\njrM7LWG6d8nnqoPHRjVf13QuMu1pnwT4vHA+C5ycxrYklcblv+LaZdfYOrF40WpDWyqee55Glysw\nMcK9klSYjIepz1NVFfE0ycsO33XLNlYDMHdVue3xY3bePin1+IwouhTk8ZejHVx7hPaWnkukU1Ap\n4GMR+VFELjfTBiulfCZCm4CQ2NUicrmILBCRBR7T11tGEKWPq3r5JWhpoSaLrLiyCotAqJv/PQBl\nd9zBmlN+k64WGVja5XM0C1B86mmRz+skI4Y+lqi77eGfp09izT+OTUpZmuwjnf+G/ZVSk4FjgN+K\nSEAMcaWUwkahppSaqZSaopSaUlCQbs2lJhNZd8EF6W6CLb41VDFhVStm8Ij5pN2GRjweHNywPejF\nvblL2gSVUqrU/N4MvAnsBZSJyPYA5vfm8CV0MtrTGWVwR5ZU2nOdsfRxlo6wafWa6BF/U9lxZskz\nrawPbzr/3CVTKewkI0NNeknLr0hEeohIL982cCSwBHgH8L0OXwC8nY72dSj6JTE5ROvY4+z3Vx97\nLCsOOTS0mI5a02Rpb93cuR1TZwQe+t8KDrz3c5ZvClx+ERx996iJg5l10Z4M7NmFvUb378gmajox\n6dKdDQbeNIfyBcALSqkPReQH4BURuQRYC5yRpvZ1OHXfzaPvaVHmLcKQHe/eSSDVqp/g8m2E0uZ/\n3R/29LJ//APpGmQ+rZThE7Ad86nV773HsH/el/D57aWksp77PzFcVB314FcAzPn9/owd1JOlG6r9\n+eb8fn8mDu0DwIKbjuj4hmo6LWkRVEqp1cAkm/Ry4LCOb1ESiFVaBOcz96vnzGHAZZfSzZH4Kn47\nymfNouvYcfQ8YP+klpsWUq36i4GmFSvCFlrx7OzQE5Ri0/RbqXrlFcZ+/FHYct2T96DLsGEU7rAD\nAy69NOmqP09lJZ6ysrh/X55WL1de9xRFfYZSX9jdn37cQ9/4t0VgzT+OS1pbNZmBy+E8GpgB5ANP\nOd2uu4OOXwjcB5SaSf92ul1PpaItWoEcAaUUytJh1Hz2OWX3pu7NtrVqG2C4Bip/ZlZA3Ymy+e57\n2u8qqBMR7z2t++67wISAUVdsZVW98krUPKq+nqYVK6j97DNKr7021AtHRQXVH35Ew8KFMdUZTPGp\np7Hm5FPiPu+VL93c+81j/H3+rLB5nrtkakJt0mQuLoczH3gEw9htAjDN5XBOsMn6stPt2s38pERI\ngRZUEVl7zrm4Lc+m5KqrqHj6afvMsb6xx5Bvw1+vZ/M999C4ZGlsZWbJxHtKiXYPElQbhgiGOMtR\nEYRZc0lp2GPB19NaUUHpNddQfNa0uOr3kej6vTe/LwZgdHV4d1VWt0aaTsNewEqn27Xa6XY1Ay9h\nrHNNC1pQRaDhp59iylf71VexFxqDTPFWG3p/5cl8Z6TJpnH5csruudc/8tnw1+vZ+Pe/t7tcv2mz\nN/ABBMw52Qi7kJhTAQMqZX4pVJg5qKZlbQuOW4PCgqw6/PAorU4vq7bU8mtZW5vn3WCvlR89oEdH\nNUmTPAp861HNz+VBx4cB6y37JWZaMKe6HM5FLofzNZfDuUOqGqsFVRJYf/kVIQKo0eWi7N77/B1u\n5Qsv2p9s7fgydJ1Ia1VVu+I9xcPa886n4pln8G4z1KDb3n6bqldfS0LJ9ve2/MknI5/mjf5msfne\n+3DvHD3kRN238VjvBdbbFnAx9fy4toJR18/hsH996U/rVpjPkD7deOHSqQzr2533ftc255mXJe6e\nNAF4fOtRzU8iYR/eBUY53a5dgU9o8yqUdLSgShHFZ59DxdNPo+rrQ455m5tZeeRR/nhI7SbFqr81\nZ57JmhM7eNSfKqEd4V612rg1qv3yS6pef6MtwaZdlS+8EFvdNhGB11/xf6w48KCQ9ObitQH7G2+9\nNbY6YqS1qoqaL76wPXbqY9+FpBV1MVw67TtuIN9efyg7DzOs+7oU6C6kk1IKWEdIw2kzmgDA6XaV\nO90u3/qEp4A9UtUY7dohWQT3X74O0aZjaykppWXdOsruvBMKMt+nW8vadR1XWaqEru85RCi/ubg4\nJK1xyRI23ngjfU81XDEF+AP0lRVjm5W3NSSt9ssvbXJCwy+/BOx7ypK79n391VfTsOBHdpz3Hfl9\n+4bN9+ejdoIwUUZ+vOlw8vVoqrPyAzDe5XCOxhBQZwFnWzO4HM7tnW6Xz+XdiUCQY83koQVVqojQ\neW1703hDt+sYk1VHrhHVms//wpDGe9ae52UzGmsPvhFbtAXMp00eTjHYtn1Az+S5R9JkFk63y+Ny\nOK8GPsIwT3/a6XYtdTmctwELnG7XO8DvXQ7niYAHqAAuTFV7tKBKFnHEHdo2Z06YvL6isl8AtdbW\n4tmyha6jR8d3YqpUfjGMqFJOrFXb3YMkCyofwQL+xjcXA7Dr8D788fAdKSzM/BG/JjU43a73gfeD\n0m62bN8A3NARbdEK5lQRQfWXknASGca6Sy5h9TGxe7v21tWx6vjj/RaPtkQSMtE8P/jlVGKCylNR\nYZzbDmexNR99mFDdkHzXTX4ryKBLeH6+oeb9/aHjOcShQ71rMgMtqJJFEmVP3IKstZXmdR04jxQD\njb8sAmIXDPULF9K8clXK2hOuY46VFfvuR9Urr9qPdmK8xqYVKxOrHPA2NUXPFA/mdSwpreLthaHr\nuQYmyeu5am5mxcGHUPPpp0kpT5ObaEGVLEJcI9l3XlWvvx5VvZWI6q82jAVX2omxE48phEO71IJt\nqr+mNWsSKqFuXpA1nG8dVTtaFTOtoYYY7aGqwRihXfbsD/zhpYUopahpbBu17baDaWDRTlWpp7wc\nz6ZNbLrjzrjPbVi4EK+N1awm99CCKukYHaJfVRP0R28Kjjjb2UnmnFC7fP21Cbl4VJKRyil/+pkQ\n67xsobHFnPMyb+noG97nxjeXAHD3byxrwpL0/DybNoVGW46Uv7yc4rOmseGv1yelfk12owWVDS6H\nM6E3QIPE/9i+UUUic1iqpYWazz5LuO5kUv7MrLadWI0AOsozepSOd+Ott+JyOKOXA5TPnEnxmWcl\no3UdhlKKhuZWlHkZYvm9vvOL4WZppyG9rCe0r0LL/Yon2rIvGnLj0hjdiGk6NdrqLwyVzz0X3wnh\n+tkOsjLb8uAMVEsLI2Y9Q4+99+6QOsOx+Z572nYyxYTe7DDLZ0ZegF/14ksRihB/B5/NlFY1oPC9\nFIU+H99iXiCNz68T3GhN0tAjqmSRTA1XAoX5VI123hXSSYaIKX+/12q6ZspZlOLVBevbnovNA7JG\n5U2GB/9EaLN9yZhfkCaNaEGVdILeBDv8j55hb6KxXn+w6i9D/R7aGn1kyqgxFpTiia9W4/udHL9m\nLgftOChC/o5plo+Wss201tZaJZVGo1V/wYR7g2ytrY21hOghFaJ0wu1ZZ9W8fh21X3+TkkCJnooK\nCvrHGV485oWqqRXwMVkVxoBqTc3C24A6Uhju3lW81ajDvB2nr/wC58WPATB/dTnD+nWn/qefQXkp\n2mMP4pEUTStWUPvttwy48MK2xDjv+8qDDqJg0CBGvWyqYLPpJUCTMvSIKhibP4a3vp5fp+wZcxEb\n/nZjpOKiN6Edr5Fb/nV/ygIlrth3Pzzl5fGdlOiIyrao2O9LSN6kCCqhefXqJJQTmdZ477ENzSWl\nbHv3vZD0ix40ogz37lboT2tYupTKl19h6pgBDO9XxNqzz2btOecaB2O45+suvoTKV19lzWmns/nu\ne6Lmj4Zny5aMHVFr0oMeUQVjMwKIfTQFIElf85JMlMeDFCT+2FsrKigYMCCOChMUuknvqNpfXtOa\nNfb+GZP91p+X1+7fUPHpp9NaWUmfE45nzda2ECGtYrhEKrIIquJTTwOgx3770WV4UMghy7U1/PIL\nqqWFoilTArLUzZ1L3dx4QphEx++sN0WuozTZRYePqERkBxH5XESWichSEfmDmT5dREpFZKH5acdi\nl3aQYKej/J4DQlb+xl1WqlwsNSxegnvnXaj95tuUlG9Hwn24zYntUd9FjTsVA2HXwCW7M02CkG6t\nrARg6YZtHPLPL9rS8/JwDOlFoY3XftuYV5bnUHzmWaw997yodSfDi8am2243q9eCSpMe1Z8H+JNS\nagKwN/BbEfHFe39AKbWb+Xk/fBGpw1a9FENnu+XBB62FJFS3Z6s5f2BW2LhsGfU//5xQWXbU/7gA\ngLqv44hI3F5i7Whi6JvjskCz5N2aBCEVa13JIFnzaQDHPRQY8yxfeTlq4hDb+y35Nt1BAte2dtrZ\nYY/Vff99bM8xz2xLDIErNZ2fDhdUSqmNSqmfzO0ajBgmdiGO04Pt23F8f5aAOSa7P2WYjsg3t9W6\n1ZijKLv9joh/+kSJ1lE0r1uHao/qKc/ys0qm6i+OojwbN/q3t1jDzWcDyVR7Bt3/POVl6pgwBjH5\n+SFzkImYpzcuW2bZC7yWdedfQPU779ie521uDk1M8PfTXFxsX54mK0mrMYWIjAJ2B+abSVeLyCIR\neVpE+oU553IRWSAiCzzRPGYnQrvVOIl3Mspcjd9SGuokNBnE8qbeXFLCqiOPYsuDM2yPx9RxWe9h\nlPyeLVtwOZw0/LwwuKKQvBJHkL71V/8u5ryZhrJ0sENsIvtWvvRyRCevViezwQt685RinzEDbNXL\nUlDAqmOPC2pM6HPYNmcOTSsTd7Bbv2CBbXpAFGnffzuB/2Prtm2sOvoYNt18SyLN02QgaRNUItIT\neB24RilVDTwGjAV2AzYC/7I7Tyk1Uyk1RSk1paAdRgHhUO1UNSjlpWHBj20JqZwMToHprmfLFgDq\nvp8fJWeM2LRx4823UPnSy0Bbp1Xx3H8jFtNcXBzXs+ksPhX7HH9cSNqm6dMpiSCI//BSm9C/YO8R\nXLTfKP/+l9cegLeunua1a0POk7w8vMELom2e34Y//ZnVx58QQ+uh2cYBcEup/fINO0MV34uR8nhi\ndibsc2RbN29eTPk1mU9arP5EpBBDSD2vlHoDQClVZjn+JBBqW9sRxDinEk6tUDk7sMNVcQoquw5k\n1XHHM/CqK+lzXGinFQmXc0JgQhoWUdqNwKpeeQWAfmed6b8/IkHvTEGjv1VHHxNibZYL5PXoEfbY\nmtNOp2ivvegyaiQ9pk6ly8iRlNcGGjLccsJEpKAA13XGfktJKS0lJbbl2b73mInhPJ74XjjCsc66\npsqkaJ84XHyZv481Z5xB0zIX4z7/jMLtt4/9fE2noMMFlRj6p/8ALqXU/Zb07ZVSvomFU4AlHd02\nIKYRUPX779NaE6PJup16MoIKzu6tsnnVKjZcfwPlM5+k//nn0ffUU40D0UZUIcfTEOU2Wl2+UVJe\n6OA+2DlsOJVRrtK4ZAmNS4y/SX6/fjS/+j7H/zvIojPo/kdcY2f3khbl+W2aPj2WpgZQMNDwhKE8\nHrz19eT37h0+s/l/bFpmjJBbKyu1oMpB0qH62w84Dzg0yBT9XhFZLCKLgEOAP6ahbW0joAiRXEuv\n/ROqNbb5MdsRVYSpFp9ZbgheL03Ll7PxxpsszQrfiTQsWhShUeHPS6bFWbS6jOPmiMpGUHVWNhYN\noPseeyS1zNbKSvIP34fJZcsDDyRoKdmWlIKXGvM/seGv1/PrXlMjZzXnbf1Yfp/b3n4bl8PJ8j1y\nb6Sda3T4iEop9Q32XXVazNGDqZ//vbEh4v/jemtqEi8wToOPsIYUcaoQ1112eWhijKEukkqso74c\n8kTwjz3P5ZMn/i9yOJEEmbppGdePbxP6Wx55FLwxWnAmuDQjbkwz+Oo5cwDDM0ZjuBer4N+95Xfi\ni1UVsv5Lu13qdGjPFBa8jY2UXnONsWP5Q5Tdd19I3lhHHtUff8KAiy5sf+Pi7ESCJ8UrX3rZMgrs\nuD9ytDk6v4FEfugC1M6KV4SWFPkMPKHmV2R2m/qv/IknYj856De27uKLGXzTTWEyJ05+r14B+8Wn\nnkZeUVFsJ8fzQpNDLz+dndzRt4Rhy8P/btuxrh2y/Mhtw2HH+CcIiM0E9D3zzLjaF5E4Vu1vmj6d\n8iefMk+L4bxkyTIF2959j9Jrr7U/7g2j+uvUb8VCZX30NT5zt985/pKrKhNpEBCq5qub+13CzyGS\n+XrDosUhabGGnA/n8DnSGixvfT0tlnV1muwj5wXV1kceaduxdpYWQRRgbt5O8rp3T1pZ5U/9J678\n3upqYyNS35P0t1DFhuuuo/r9D8IeB0KMKWI2VslKVIjHCDs+GrkXrXEul2iPH0fPpk2hiQkKqjVn\nhH8hK3/iCao/CPd7iEzJlVfZplfOnh32nLXnX8DKQw4NSXc5nGy67baE2qHpWHJeUAVg6aSjqvbi\n+AMHzEUkURDUfv55fCf41GteL621tbgcTmOxrRnuu2nlSnunq+0hyn3yj+6CFvPWfJhYR5YN5Csv\nW2qauH2vCyLmc/UfSXVDfCE/2iOo1l10cWhior4vo4yQSv8YZoRtV1YMGgBlMxfsD2e/JLwBceUL\nL8bcDk360ILKivVPGUWgJByXSKnkOZ2NV+j586uARZc+A5LVx5/gn6BuKS3FU17efquvaJ2MOWKI\nto4qm/i173Ae2+XksDrhCIkAABi9SURBVMfzzXsyd+gu/PDv18KulWrOK2B5WZyGPEme64v0/Dd2\nkOeH5ZN2i5qndVt1iPun4Hna+KIgaDIJLajCEa2jTNTjRDLnXuLszH0umrwNjYHpHg9Vb74VkNZa\nXs6K/fan4plZ7Wpi8PUGv/l6yg1HvCHrqIIFVxax+erreWds+MCVF+zV5try3EMnMPSeu23zteQX\nctbM+LwrJN3MP8LP1bdwO9XYBZJsDRJCFc88w4r9zHse5j9m5yUjEdZdehnrLk1NzDeNPdrqz4r1\nBx7lD69iNfkNqSKJ1l4JdkqqqZGyu+7y75c//njYyeyajz6Kqcwtjz5Kz/33p/uuuwbWFeTcduVh\nhwfsb33oYTNjUOcSh1+/ZJDXp0+o+6AEqJr1Bpft7eTMxhbknNdoXe5i401/D8hz/IRBnHbxPhSY\nZto9DzuMYQ8/ROnvfh+Qz5uIsE669WTmGbVsefTRtt9NEM0lJbSsW2d7rLW6GuX1RhTm3sZGyu65\nh+2uuYb8Pn1s89R9E31+UZNcsve1NcVE7SYT9AlY9eprtm6SEqE9i3Pr57f58otkcdXwyy+BCWHe\nVrc+9DDFNhPowXNenrKykDxGuYECPOkLj6PQY+843PoALX3sPZDvs7cxH9m7WyG9dplI39NOC8mT\n37evX0iBca29jzgi5roXDhwb9lirGSomWajm+ObIOoJwQgpg1eFHsO7iS2yPrb/kUrY++ljEsre9\n+SZVL74UaA2sSTtaUFmJY44q4Unm4JX2CVDx7LOGOW6CnbnyJB7Cw7PZcFrr2bqV5pLoXt7XX35F\nbG0KmvNrtQvilwL6nnkmYz/+iO1vC/VSPvDqq8Oet7QwTKgMG8Z9+UXAfveJE23zDbn1VoY9ZO+1\n3scxJ93H3KG7xFx3NHb6KbJFa/HppyetrkzApyEIN/fm/x2GUe2HeMqw0PDLLxSfe64OL5ICclpQ\nNa1eHbBv/e3aRju15k1Q9ZcMyv5xNyVX/TbinyYSEd0rRaH02mvxbNnCiv0PYNXhh0c/IQLW0VZz\n0LOI9NacTPre+He6jBhhq+Yp2nNP23Oe2+kINvQcGJLe85BDbPMXDh7s3+4dwbFwvzPPoPeRR0Zu\nsAjvjt4vcp44iHmhbSfBp4qu+fiTMBmC15LNpewfbXOIy3efHLbsjdNvpWHBjzS3IwSKxp6cFlRb\nHngweqZwpDnyaN033yTs2qk1yDoqHrw1Naw44ED/vsvhpPrDtnmsFru1OGEof/bZhNthZfx3cxM+\n976P2nzjjQwKNWIX/+qDkVN53nmU33IvVsZ//RU7/biAYf/6Z8zn3H7yztx2ks3oSwT3+OT6CkwF\nqXARFQ8FQ0Od1/qMecK+iAa59Fp38SVUmL/T5vXrI1cYJOQaFi6kbm7ob9NTWRliVORtbDS8x3Tq\nhe6Jk9OCquaT4Leq2H8k2pN3G363U8DKg+1HFXZUvfhSUuov6NePLuPCz9uE47VxB/H0t2sYdf0c\nbnhjERNeK+OJG2f5jy/sOZwvh01iU1E/NhYNAOD4I/fgmJ2H8JtdB4eUVzAkNM1/bNCgiCE7rDgW\nL2LHH77nvL1Hcv4+owKOXXvEjhTffRyHXHRqTGXFwk6LfomeKQkMjUNIJwPPho1Uf/hhQFrLunVs\ne+edAEHlcjgtloXhfU+2Vob3+lH/0094g8zfi8+aFjJfprxeVuyzb4BzaYAtMx5i0/TpNn2SBnJc\nUIUQx9tM3ddfp7AhnZNkGZHYEavxxccj2jxtzxvSNlp58XvjbfmtpW3GCGc/+xN373keFx15I5/+\n8T76nnUW4668hMfO3YOB0wzDkT4nnejPP/ivf23XNfiQwsIQf3g+fn/YeKPeU05m9FtvxlVujwMP\nsE3P69IlYH/wzX+3zReOQX/4fdQ8Yz/5OO54asmg9JrQIAwb/vJXyu68MyBt6xMzKbv3Pqo//hiA\nyueeC7BQVUqFzO2qlhYaFi2itbqatWefEzbOl4+K2f+laYWhFtz2zjsBx1orKgDw1sXmSirX0Obp\nFqJZBGnax6qjjk5Z2XlFxmilYPvt8YTx63bFoX9mXe8hbF9Xzi7la/jnabtwzBfRjTbctx9Nt8J8\nYB9/WtEee+B0u1BK0ffMM+k+aRLSgY51RYRuDod/f/hjj4Z1LwQw8oUXKJq8O80lJaw6PLyF4cCr\nrqT/2WdTFi7cjA39pk2jy6hRIHkBo+uA9poeM0a/9SZrTj7FNs+ol1+i+MyzYq43mWz9d6iVX0Ak\ng5YW6r4NjPW15swzaVrmCnhZAUJGYz51Xtldd0FhoS8xqDat8ouEHlFZqHjmmXQ3ISF6xWHa3BkY\nfNNNFAwZEpDWfbIxyb3Do48w/lv7dS7rehvnTB5lqPFG9O1O8d3H8c1fD+Gm45wU330cZ08dEXBO\n8d3HmULKHhGhaPLklAqpSJaAwx5+iCG33UqvQw5hzPtz/OldxrapQofccjNFk3c30ocPt70/PrXk\noN+HHx2Jr5MNPrdPH3ofcwy9jz6Kkf8N43PPXLvUzeGwnVPsMnYs3SdNAosLqME33sj4bzJDc+He\ndVKgX1Dagjk2LFka8dzyJ59qsyK0LF62rjH0z00FhMFTbLr9DuoXLKDm889pWLKUTbffEdXQqzOi\nBVWGMPCqKxM+t//55wXs5/dvM53e7rrrEi43U+l/7jkMf8R4Ax42Ywajrp/DPuUO/rz/VbxY0Y2q\nrj3p+Zfrbc+dcdZudB+8HQBiqryG9yvi0gPGAHDXKbsE5M0Eeh95JGPee5cx770beuyII+h3xhkA\ndB0zBqfbhdPtYuyc9/zb/aZNCzinYMCAkHJ2+nEBTrfLvz9sRqBw7HPSiez080+MfOGFgHSn2xWg\ndi3ac0/6X3B+SPnWKL4F/fqFvdZxH39EgRnBN79PbwoGDmxrV2Eh+TZtTzfNq1YF7Hu2bg0withy\n//24J4Z6wndP3DmiU9zWqioqn3+e9b+9mpIrr6L4tNOofP55KmbPpur1N2itzR2BlbOCqtHtTlpZ\n4YTM8Ecfoet4Y05h9JtvMCAoDPiA/7uCHb+fj9PtivgmGw2rGXX33Xdn7EdtE8gDLrFxNJrBjHj6\nP+QPDDX9BiiaMgXH0iUopfiaASx+9gN2/dx4Q/Xm5bN04BhufXcZU+74lAN+HcgxJ7XFEau+6yFW\n3XUsJ+02jCG3TmfI9Ol0391eEPlGFyftNsz2eDroOm4cXceN67D6eh91JKNebjN2GXrPPUhBAUWT\nd6fnYYcBbYI+mME33MCQoBD1wVEDggVO0V7Gb7hw6FCKdjdGf1Y3WqPffINxn37KkJtvDqmvaOpU\nCgYHGrJ0GTkywtWllvWXXU7FrNgsWitfeJFWX1QDCy0bN7Jin32BUJ+FW2Y8xMYbb2STzb3orEg2\nm0P26NFD1SU4DE6W6WzPww5j6F138uvUvZGiIrqOG0fjokUMmzGD3keFrolxT97D71na+gYb3Ka3\nJh7JE+OPZLu6CpQIp634nBPXhKpMpk+9iJdmXYfbOSGgTI9poVTQr19c19rr6KMZ8veb2vymdTC+\neR/f9Thcy4A2YwmlFI9+sSrArBzgqfOnMPPr1Xy/piIg/YP597PduefEJbBbNm6kee3auL1VZBO+\n30TwbzCWfKq5mZYNG8gfOJD8nj1tz1NKsfLgQ+h1+OF0GTWK/uedG3C8tbYW1dRE8+rVtNbU0POA\nA/yqxdpvv2X9JZcy9tNP6TI88GVBeb1UPDub1opyyMtnuz9e409ffeKJNK80Rjc7/biA4vPO86vn\nMp2uO+5I06+/0vPww/Bs2EjjsmVRz8nr3Zudvp8fNZ8dIlKvlIrNDDUDyElB5ams9L+txMrYTz5G\nNTbibWqm2OIWx/cHbq2tQ/KE1tpaav/3vxB1i4+q117z+35zul20ehVV9c24Ntaw6YLzmFhRzF/2\nv5LFA8bYmsh+8NafA/aPOfmfPHL2ZA7v1Uhe9+4UBs3dADS6XNTNmx8QxHH022/RdexY1p53Pg0/\n/+xPdyxZjBQU+DuongcdRFengz7HH09+//60lJZS+/XXDLz8csruvofK557znzvyuf+y9tw2NeT4\n7+birasPWRgsRUX0PvYYtr32uj+t7+mnkd+nD9v92bi+qjfexFtTTf8L2kJhVDe2MPm2T/BY1rD9\n/tBxXHvkTv59pRS1TR56dbOfT9EYxCqoGhYvJq+oiK5j4zf/Twfeujqa16/3G5o0l5RS9corFO0x\nmQ033pR0F1PpJtrzC4cWVO1ERI4GZgD5wFNKKXvX0iQuqOrmzWfdhRfGlLfXkUfS5zen0Ovgg/1p\nTWvWsHba2fSddhbb/eEPMdfr9SpEoMr1K6//WELldsN4+Yf/b+/eg+Oq6gCOf3+7d7PbvJo2ado0\nLWmxpVkQKRSRohQfWB6CpQ5WqEKtKD5nYNQZYRgQZBgro6COD6wP3iCKDI8OtaSVGcdaoVVqKd3Y\ntLWV1ND0mVebfWR//nFvYFOTpkk2uzfJ7zNzJ5tzb07OL9ncX+65557TyIH2OACBdBdBVZJB94by\nA585hw/XTuZoIsWD63fzo3UNbyeq+85ewpR5Z/HogTArPnEm15x3Sq/fs7mtkwNtCWZUFJJY/SIH\nX6ojsW4tc/65mUA4TPrYsR5P25e/+hrxVJqjD/yU9LvPYvyCC5lQWMC4gr4HC2Se9GK1UXAcypcv\np/Ib76w5pMkk8V27cGbMBBE6t27lzaVLASi9824qrl7M1r2tvPHfFppb48yeXEzdtn2s2tLE6VWl\nNLUc4/BRt5svGBC2fHshRWEbtDpYJ5uoRpPUoUM0XODO6hGaNo2yJUuouPELtNbV9ZgQeM6WfxL/\n13ZaV63i0MMPU3rFFbSuWgW43cI1Tz5BeMYMDj74EPvvv7/H96i65x6abrstZzENZ6KK1UZ7nIuj\n9bEVx+0PA48A84CDwKei9bHdg2pQf+31U6ISkSCwHfgo0AhsBK5V1V6vgwebqOKNe9nl/Zdf/cP7\naVz1R1qv/zJl+xsJz55N5JknOfLQQ1R89atEvvBFkl1KfVMruw50UOAE6EoroWCAv+48wJ6DR/n7\nnsNUjY/Q1OIunzG7spi0Kjv3d3BqRRHFEYcppRE27DxIW7znE+njQkGOJd3RP3cvOoPrjnvAM1Nb\nZ5LkmtXogf2U33ADbZ1Jzrzzpbf315QXsufgUcJOgHiq75kTZlUWM2dyCROLCvh3cyu33ffOQ4mX\nXdX7Q5k15YWcWT2eeTUTcAKCiNDc2kkqrVx5szvc+OUHXqAgGMAJCMGA8Oruw6TTyv72OEcTKbbu\ndfviRUDTyqcb1rHxjAVsT/Z+ryNTScRh7vQyLjptEtfNryHs5G4o+Gg0FhMVQLK5GVIpQlOn9ijX\nRIJdV36cxJ49Pbs5U6l+F6PM7FqP1sc49vrr7P7kEkI1pzD95w9w8Je/JN3eRlvd2qzGUvP4YxTO\nG9wMJf0lqlhttNdzcbQ+ti3jmK8A74nWx74Uq41eAyyO1sf6Xtp5CPyWqOYDd6rqJd7ntwKo6nd7\nO36wiWrr3hZuv/03nHVkD8/OvZwjR3vOEB1Md7Fo11+oO20Bben+HySNhAIUFjgc6khQUVzAgfYE\npRGHipIwpZEQm988Qk15IU0tnbz/XeW8a1IxqbRy88WzKSvs/yR9Is9t3stNv918wmM+MKuCSCjI\noY44saY2olUl7G+P03I0ydSycVSNjzCDY4ScAJUzqmk5lqSyNEJXV5pwKMift+9n9dbep0ZyAsKF\nezbxn5LJ7Cyb1mNfMCDUTCxkYlEBJRGHAifA+HEhnGCA4rBDw742kl1KoivN/FPLOXVSEbMqi1F1\nk9nMiiIKC+yqaTiM1UR1Iul4HE0k+nzYui/xHTtIx+OEJk/G6WMgUG9UlcOPPkaoeiqR2lpC1dVu\nG5IpOtavp+h95xEsKyPe0IAzZQrBkhJUlWRjI6Hq6iGtPXYSiWo+cGe0PnaJ9/mtANH62Hczjlnj\nHbMhVht1gLeASdH6WNaTit/OAtVA5oRajcD7Mg8QkRuBGwEK+hh11J/y4gIuWvox2jtTLOxMUl4c\nZmZ5EUVhh45EinWxfUz60HKuTqWpKA5TWBCksiTCrMpiggGhKBwkkUozqSSc9xPpornVb49O64in\nUKA4y11i13rdiu3xFIlUmq60klYlEgpSGnFoi3+UzkQXXaoUFjikutK0daaoKovYlY9PTbn7Ozkd\nRTgSBMJhCIcH/HWD/TmKyP89WtLdhsyBWN0jh7u/pmD69EF9v+M4IpI5D9xKVV2Z8Xm/5+LMY6L1\nsVSsNtoClANZvxHot0TVL++HuRLcK6rB1FE1fhw3X3xan/uXnJuVN0LODfc9m+KwA738HZdGQpQe\nN3ihvHjgf/AmdyaMsuU7zIClVPXc/g/zB789R7UXyMwS07wyY4wxuXMy5+K3j/G6/sbjDqrIOr9d\nUW0EZovITNwfwjXA0vw2yRhjxpyNwOxYbfRE5+LngWXABuBq4E/DcX8KfHZFpaop4GvAGiAG/E5V\nTzyRljHGmKyK1sf+71wcrY+9EauNfidWG+2ehffXQHmsNroD+DrQ+7xlWeCrUX8DNZSZKYwxZqwa\naQ/8+uqKyhhjjDmeJSpjjDG+ZonKGGOMr1miMsYY42sjejCFiKSBY/luxzBxgFS/R40OFuvoNZbi\nHUmxjlPVEXOhMqIT1WgmIptG0pPjQ2Gxjl5jKd6xFGuujZiMaowxZmyyRGWMMcbXLFH518r+Dxk1\nLNbRayzFO5ZizSm7R2WMMcbX7IrKGGOMr1miMsYY42uWqHJERKaLyMsisk1E3hCRm7zyiSJSJyIN\n3scJXrmIyI9FZIeIbBGRczLqWuYd3yAiy/IVU1+yGau3v1REGkXkJ/mIpz9Z/t3e69UR846RfMXV\nm0HEWisiG0QkLiLf7K8eP8lWrN6+MhF5WkTqvd/t/HzENGKpqm052IAq4BzvdQmwHTgduBe4xSu/\nBfie9/pyYDUgwPnAK175RGCX93GC93pCvuMbjlgz6vsR8ATwk3zHNsy/2wuA9UDQ2zYAH8x3fEOM\ntRJ4L3AP8M3+6sl3fMMRq7fvYeDz3usCoCzf8Y2kza6ockRVm1T1H97rNtw1XqqBRbhvYryPV3mv\nFwGPqOtvQJmIVAGXAHWqekhVDwN1wKU5DKVfWYwVEZkHTAZeymEIA5LFeBWI4J7IwkAI2JezQE7C\nQGNV1WZV3QgkT7Ie38hWrCIyHliAu34TqppQ1SM5CWKUsESVByIyAzgbeAWYrKpN3q63cE/K4P5B\nvJnxZY1eWV/lvjSUWEUkAPwA6NGN4mdDiVdVNwAvA03etkZVYzlo9qCcZKwDrceXhhjrTGA/8KCI\nvCYivxKREbMWlB9YosoxESkG/gDcrKqtmfvU7RcYNc8LZCHWrwAvqmrjMDUxq4Yar4jMAqLANNxk\n9mERuXCYmjsk2Xofn6gev8hCrA5wDvBzVT0b6GAYV8MdjSxR5ZCIhHDf8I+r6jNe8b6Mbq4qoNkr\n3wtMz/jyaV5ZX+W+kqVY5wNfE5HdwPeB60VkRQ6aP2BZincx8DdVbVfVdtz7WL676T7AWAdaj69k\nKdZGoFFVu68Yn8ZNXOYkWaLKEW/01q+BmKrel7HreaB75N4y4LmM8uu9EWLnAy1ed8MaYKGITPBG\nGy30ynwjW7Gq6qdV9RRVnYHb/feIqvruP9Es/m7/A1wkIo53grwI976Ibwwi1oHW4xvZilVV3wLe\nFJE5XtFHgG1Zbu7olu/RHGNlAz6A20WwBdjsbZcD5cA6oAFYC0z0jhfgp8BO4HXg3Iy6Pgfs8Lbl\n+Y5tOGPNqPOz+HfUX1bixR3p9wvc5LQNuC/fsWUh1im4VxStwBHvdWlf9eQ7vuGI1ds3F9jk1fUs\nPhup6/fNplAyxhjja9b1Z4wxxtcsURljjPE1S1TGGGN8zRKVMcYYX7NEZYwxxtcsURlzkrznnv4i\nIpdllH1SRP6Yz3YZM9rZ8HRjBkBE3g38HnfeNwd4DbhUVXcOoU5HVVNZaqIxo45dURkzAKq6FXgB\n+BZwB+5sGTvFXSPsVRHZLCI/8ybURURWisgmbz2jO7rrEXd9rRUi8hru1EnGmD44+W6AMSPQXcA/\ngARwrneVtRi4QFVTIrISuAZ3Da1bVPWQiDjAyyLytKp2T5/TrO4kpcaYE7BEZcwAqWqHiDwFtKtq\nXEQuxl0wb5M7PRzjeGcZj2tF5Abcv7WpuAvvdSeqp3LbcmNGJktUxgxO2tvAnbvvN6p6e+YBIjIb\nuAk4T1WPiMhjuAsjduvISUuNGeHsHpUxQ7cWWCIiFQAiUi4ip+BOvtoGtGaszmyMGSC7ojJmiFT1\ndRG5C1jrDaJIAl/CnS17G1AP7AHW56+VxoxcNjzdGGOMr1nXnzHGGF+zRGWMMcbXLFEZY4zxNUtU\nxhhjfM0SlTHGGF+zRGWMMcbXLFEZY4zxtf8BjiS/uVlIMu0AAAAASUVORK5CYII=\n",
            "text/plain": [
              "<Figure size 432x288 with 2 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "CI4AxOSvvjwZ",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 295
        },
        "outputId": "26b1a57e-6bc9-4ffa-92bd-3d96d4f2bc01"
      },
      "source": [
        "# Amazon Stock Plot\n",
        "import matplotlib.pyplot as plt\n",
        "import datetime\n",
        "import numpy as np\n",
        "\n",
        "%matplotlib inline\n",
        "\n",
        "x2 = np.array(pd_data2['Date'])\n",
        "y2 = pd_data2['Open']\n",
        "y22= pd_data2['Volume']\n",
        "\n",
        "\n",
        "plt.title(\"Amazon Stock Performance Over years\")\n",
        "plt.xlabel(\"Year\")\n",
        "plt.ylabel(\"Price in $\")\n",
        "\n",
        "plt.plot(x2,y2)\n",
        "\n",
        "\n",
        "ax2 = plt.twinx()  # instantiate a second axes that shares the same x-axis\n",
        "\n",
        "color = 'tab:red'\n",
        "ax2.set_ylabel('volume', color=color)  # we already handled the x-label with ax1\n",
        "ax2.plot(x2, y22, color=color)\n",
        "ax2.tick_params(axis='y', labelcolor=color)\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "plt.show()"
      ],
      "execution_count": 17,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\nB+/EB9ePC+Z/fvN4JhhD+PMZe8dtZ5spVwSPX/xZfIVSft1dtO25D0NuvIEhv7uV0mHD6HXE4S4/\nkcWQ393K9vdOY6dnno660Ducku22i5nnVPLF/UKV8337ncnSY8/gudutYZ+mwydw76l7srrPtnzW\n0ouzj/0dVx1xJSv7DmVj9378e8zxVPbZln/ueTIXTPgtu019l1e/a9+Z+H++Pvy91x5JfdZs0GPv\n+N8vQOmwYez45JMMvnIKu37wPsP+/jd2fPopRs58jZGvvcrkgyPn1Kp+fSkDJ0fOn3nm/4Bnfuic\nzLbXX88u785h9Hff4jEXAjD07uQ3UEyGES+9lLhQGkll7ze3mB4jY3Wng8qrr8m1CFlDb6eSJsp2\n3jlu/lUvfsus+daK/P49y7hjUmjnul2/7jw22drFt6S4iCPsYcVwinr0YNRnn1L94otMvfhiWi4/\nkWXHnxBR7vnRE3jm1XLY5WyW7rIrA0eNYuBZZ1FxmTsrCmCbq69i4FnR3wqH3HIL6+6+OyJ9x0cj\nF3k7t8FQSnHA3e+ysa6F3Q+7jEvnv8ouNVVMm3ICQ8Zan7/vj/PxFBcjIhy882AOv/8DNvXox9Tz\nxzHlhW8p/e8szulWwoy/f8zMXQ5rr9vRZlNxGR8O25ezzXfo60tuDVRDSTeeG300Fy54I2r+p+fd\nxCH/nsbcY87h3p578ear7W/+5x19M9s0bOG+Tx62EqK8zGx7/XWs/+Of4srQa+xB9BprDf2WDh0a\nkjd1N0X3smKmVZ7FTV9bGx+OvyV06K3nAQfQvHRp0PoedOklbPqnJVNx374Ude8eUr7/qafS/9RT\nQzrnsp13ZudZb+A1xgDW96h8PpaecCK+ioq48gcYeMH5DL7wQor792enZ5+hraaGysuvSHxhB0no\nvdiJ8dcmjuLfWdAWWJrovttu7Dr3A0Z/83XU/Dd+cB9OZuLe28ccVgRrKHHwpZciRUV0CwtPVV3W\nC4BnPMcG00bdMhuf7cW03e230efooxn1ycfR91dyMPiSSyLTrpzCjk/+m4G/PhvDa7Lr3A/Y7euv\n8Pw4n9E/fE+3UaOi1lXX3Mov/vUZ5z/5FRvrrDUvCwbvTEk3a7i1b4/2zyslJcFhkB0H9WTFtBNZ\nMe1ETtp7e1ZMO5GxOw9ij2H9uPKoXTly9Da8d90RXPjTkSj7muKdd+b4aTdR260XvzjxTuZtsxvT\n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\n",
            "text/plain": [
              "<Figure size 432x288 with 2 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "JBB9zhDuvjwk",
        "colab_type": "text"
      },
      "source": [
        "### Divide Training and test data"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "HKkA_Dxvvjwl",
        "colab_type": "text"
      },
      "source": [
        "Next step is to divide data into training and test set. This has to be done in a chronological order. So, data is divided into:\n",
        "- training set from days 0 to days 'training'\n",
        "- test set: from days 'training' to day 'training+ test'"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "1VG9Tebevjwn",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#Training Data\n",
        "pd_data1_train=pd_data1[0:training]\n",
        "pd_data2_train=pd_data2[0:training]"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "-jMjyhhMvjwt",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#Test Data\n",
        "pd_data1_test=pd_data1[training:training+test]\n",
        "pd_data2_test=pd_data2[training:training+test]"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "xJB5zUBQvjw2",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "\n",
        "\n",
        "\n",
        "vol1_train=getStockVolVec(stock_name1)\n",
        "vol2_train=getStockVolVec(stock_name2)\n"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "D-O6KhIYvjw8",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        },
        "outputId": "861ac69d-de59-4bd1-bb1f-c214556b9739"
      },
      "source": [
        "#Initialize state and set benchmarking model\n",
        "\n",
        "\n",
        "\n",
        "total_Prof=[]\n",
        "done=False\n",
        "\n",
        "\n",
        "batch_size = 64\n",
        "\n",
        "#Benchmark Model\n",
        "#In this model, we would divide \n",
        "\n",
        "\n",
        "#Initialize state and set benchmarking model\n",
        "\n",
        "\n",
        "#print(df_data1)\n",
        "total_Prof=[]\n",
        "done=False\n",
        "\n",
        "Act_datasize = training\n",
        "batch_size = 64\n",
        "\n",
        "#Benchmark Model\n",
        "\n",
        "data1_train=pd_data1_train['Open']\n",
        "data2_train=pd_data2_train['Open']\n",
        "\n",
        "data1_date=pd_data1_train['Date']\n",
        "\n",
        "Act_Bench_Stock1_Bal=int(np.floor((start_balance/4)/data1_train[0]))\n",
        "Act_Bench_Stock2_Bal=int(np.floor((start_balance/4)/data2_train[0]))\n",
        "Act_Bench_Open_cash=start_balance/2\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "### Program to calculate benchmark profit\n",
        "\n",
        "\n",
        "#sell 10% of stock in 10 intervals\n",
        "\n",
        "interval=int(Act_datasize/10)\n",
        "Total_Stock1_Amount= 0\n",
        "Total_Stock2_Amount= 0\n",
        "stocks2Value = 0\n",
        "stocks1Value = 0\n",
        "\n",
        "Act_stocks1=np.floor(Act_Bench_Stock1_Bal /10)\n",
        "Act_stocks2=np.floor(Act_Bench_Stock2_Bal /10)\n",
        "#print(str(Act_stocks1))\n",
        "#print(str(Act_stocks2))\n",
        "\n",
        "remaining_stock1=Act_Bench_Stock1_Bal\n",
        "remaining_stock2=Act_Bench_Stock2_Bal\n",
        "ttl=0\n",
        "\n",
        "Benchmark_Port_Value=[]\n",
        "\n",
        "\n",
        "for j in range (interval,Act_datasize+1,interval):\n",
        "        #print(\"closing prices : \" + str(data1_train[j-1]) )\n",
        "        Price_closing_Stock1=data1_train[j-1]\n",
        "        Price_closing_Stock2=data2_train[j-1]\n",
        "        \n",
        "        date_stock1=data1_date[j-1].strftime('%Y-%m-%d')\n",
        "        #print(date_stock1)\n",
        "                \n",
        "        stocks1Value= Act_stocks1 * Price_closing_Stock1\n",
        "        stocks2Value= Act_stocks2 * Price_closing_Stock2\n",
        "        remaining_stock1=remaining_stock1-Act_stocks1\n",
        "        remaining_stock2=remaining_stock2-Act_stocks2\n",
        "        #print(\"J is:\"+ str(j))\n",
        "        \n",
        "        \n",
        "        \n",
        "        Stock1_Port_value=remaining_stock1*Price_closing_Stock1\n",
        "        Stock2_Port_value=remaining_stock2*Price_closing_Stock2\n",
        "        Act_Bench_Open_cash=Act_Bench_Open_cash+stocks1Value+stocks2Value #Adding 10% sold value into open cash\n",
        "        \n",
        "        Total_Portfolio_value=Act_Bench_Open_cash+Stock1_Port_value+Stock2_Port_value\n",
        "        Benchmark_Port_Value.append([date_stock1,Total_Portfolio_value])\n",
        "        \n",
        "\n",
        "\n",
        "\n",
        "#print (\"total_Test_Benchmark_amount : \" +  str(Total_Portfolio_value))\n",
        "\n",
        "Training_Benchmark_Portfolio_Value= Total_Portfolio_value\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "print(\"Benchmark_Profit is  \" + str(Training_Benchmark_Portfolio_Value) +\"with Apple Stocks:  \" + str(remaining_stock1) + \n",
        "      \" and Amazon stocks:  \"+ str(remaining_stock2) )\n",
        "\n",
        "\n",
        "#Define arrays to store per episode values \n",
        "total_Prof=[]\n",
        "total_stock1bal=[]\n",
        "total_stock2bal=[]\n",
        "total_open_cash=[]\n",
        "total_port_value=[]\n",
        "total_days_played=[]\n",
        "\n",
        "\n",
        "\n"
      ],
      "execution_count": 21,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Benchmark_Profit is  52655.37275with Apple Stocks:  6.0 and Amazon stocks:  9.0\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "EKzNhZX0vjxF",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "\n"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "hJBXDtXpvjxK",
        "colab_type": "text"
      },
      "source": [
        "# Training Run"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "AzlGIa0DvjxM",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 2740
        },
        "outputId": "11a7454f-7347-47ab-cb06-61330a01f284"
      },
      "source": [
        "#Training run\n",
        "\n",
        "import csv\n",
        "\n",
        "\n",
        "for e in range(episode_count + 1):\n",
        "    print(\"..........\")\n",
        "    print(\"Episode \" + str(e) + \"/\" + str(episode_count))\n",
        "    \n",
        "    Bal_stock1=int(np.floor((start_balance/4)/data1_train[0]))\n",
        "    Bal_stock2=int(np.floor((start_balance/4)/data2_train[0]))\n",
        "    open_cash=start_balance/2\n",
        "    \n",
        "    datasize=training\n",
        "    done=False\n",
        "    total_profit = 0\n",
        "    reward = 0\n",
        "    \n",
        "    #Initialize Agent\n",
        "    agent = Agent(8)\n",
        "    agent.inventory1 =[]\n",
        "    agent.inventory2 =[]\n",
        "    for i in range(Bal_stock1):\n",
        "        agent.inventory1.append(data1_train[0])\n",
        "    for i in range(Bal_stock2):\n",
        "        agent.inventory2.append(data2_train[0]) \n",
        "    \n",
        "    \n",
        "    #Timestep delta to make sure that with time reward increases for taking action\n",
        "    #timestep_delta=0\n",
        "    \n",
        "    #Running episode over all days in the datasize\n",
        "    for t in range(datasize):\n",
        "        #print(\"..........\")\n",
        "        #print(pd_data1_train.iloc[t,0])\n",
        "        state_class_obj= State(data1_train, data2_train, Bal_stock1, Bal_stock2, open_cash,t)\n",
        "        state_array_obj=state_class_obj.getState()\n",
        "        action = agent.act(state_array_obj)\n",
        "         \n",
        "                   \n",
        "        change_percent_stock1=(state_class_obj.Stock1Price-state_class_obj.fiveday_stock1)/state_class_obj.fiveday_stock1*100\n",
        "        change_percent_stock2=(state_class_obj.Stock2Price-state_class_obj.fiveday_stock2)/state_class_obj.fiveday_stock2*100\n",
        "        \n",
        "        #print(\"change_percent_stock1:  \"+str(change_percent_stock1))\n",
        "        #print(\"change_percent_stock2:  \"+str(change_percent_stock2))\n",
        "        \n",
        "        \n",
        "        if action == 0:  #buy stock 1\n",
        "            if state_class_obj.Stock1Price > state_class_obj.open_cash:\n",
        "                '''\n",
        "                print(\"Buy stock 1 when it did not have cash, so bankrupt, end of episode\")\n",
        "                reward=-reward_timedelta*10\n",
        "                done = True\n",
        "                '''\n",
        "                #If agent is trying to buy when it has no cash but has stock1 and stock2 balance then, \n",
        "                #it should pick from other actions\n",
        "                #if (state_class_obj.Stock1Blnc>1) and  (state_class_obj.Stock2Blnc>1):\n",
        "                 #   action=random.sample([1, 2, 4, 5, 6],  1)  # Choose 1 elements from sell actions\n",
        "                #else:    \n",
        "                #print(\"Bankrupt\")\n",
        "                reward=-200000\n",
        "                done = True\n",
        "                #end episode\n",
        "                     \n",
        "            else:\n",
        "                #print(\"In Buy stock 1\")\n",
        "                agent.inventory1.append(data1_train[t])\n",
        "                Bal_stock1_t1= len(agent.inventory1)\n",
        "                Bal_stock2_t1=len(agent.inventory2)\n",
        "                open_cash_t1=state_class_obj.open_cash-state_class_obj.Stock1Price #Here we are buying 1 stock\n",
        "                \n",
        "                #needs to be reviewed\n",
        "                \n",
        "                if(state_class_obj.open_cash<500):\n",
        "                    reward=-100000\n",
        "                elif (abs(change_percent_stock1)<=2):\n",
        "                    reward=-10000\n",
        "                else:  \n",
        "                    reward=-change_percent_stock1*100\n",
        "                \n",
        "\n",
        "               \n",
        "                \n",
        "        if action == 1:  #sell stock 1\n",
        "            if state_class_obj.Stock1Blnc <1 :\n",
        "               # print(\"sold stock 2 when it did not have stock 2, so bankrupt, end of episode\")\n",
        "                reward=-200000\n",
        "                done = True\n",
        "                #end episode\n",
        "            else:\n",
        "                #print(\"In sell stock 1\")\n",
        "                bought_price1=agent.inventory1.pop(0)\n",
        "                Bal_stock1_t1= len(agent.inventory1)\n",
        "                Bal_stock2_t1=len(agent.inventory2)\n",
        "                open_cash_t1=state_class_obj.open_cash+state_class_obj.Stock1Price #State[0] is the price of stock 1. Here we are buying 1 stoc\n",
        "          \n",
        "                if(state_class_obj.Stock1Blnc<10):\n",
        "                    reward=-100000\n",
        "                elif (abs(change_percent_stock1)<=2):\n",
        "                    reward=-10000\n",
        "                else:\n",
        "                    reward=change_percent_stock1*100 #State[0] is the price of stock 1. Here we are buying 1 stock\n",
        "                \n",
        "                #total_profit += data1_train[t] - bought_price1\n",
        "            #print(\"reward for sell stock1 \" + str(reward))\n",
        "                \n",
        "        \n",
        "\n",
        "\n",
        "        \n",
        "        if action == 2:             # Do nothing action    \n",
        "                if (abs(change_percent_stock1)<=2) and (abs(change_percent_stock2)<=2):\n",
        "                    reward=10000\n",
        "                elif (state_class_obj.open_cash<0.1*start_balance):\n",
        "                    reward=1000000\n",
        "                elif (abs(change_percent_stock1)<=2) or (abs(change_percent_stock2)<=2):\n",
        "                    reward=1000\n",
        "                else:\n",
        "                    reward=-100000\n",
        "                \n",
        "                Bal_stock1_t1= len(agent.inventory1)\n",
        "                Bal_stock2_t1=len(agent.inventory2)\n",
        "                open_cash_t1=open_cash\n",
        "               # print(\"Do nothing\")\n",
        "        \n",
        "        \n",
        "        if action == 3:  #buy stock 2\n",
        "            if state_class_obj.Stock2Price > state_class_obj.open_cash:\n",
        "                '''\n",
        "                print(\"Buy stock 2 when it did not have cash, so bankrupt, end of episode\")\n",
        "                reward=-reward_timedelta*10\n",
        "                done = True\n",
        "                \n",
        "                '''\n",
        "                #If agent is trying to buy when it has no cash but has stock1 and stock2 balance then, \n",
        "                #it should pick from other actions\n",
        "                #if (state_class_obj.Stock1Blnc>1) and  (state_class_obj.Stock2Blnc>1):\n",
        "                 #   action=random.sample([1, 2, 4, 5, 6],  1)  # Choose 1 elements from sell actions\n",
        "                #else:    \n",
        "                #print(\"Bankrupt\")\n",
        "                reward=-200000\n",
        "                done = True\n",
        "                     #end episode   \n",
        "            else:\n",
        "                #print(\"In Buy stock 2\")\n",
        "                agent.inventory2.append(data2_train[t])\n",
        "                Bal_stock1_t1= len(agent.inventory1)\n",
        "                Bal_stock2_t1=len(agent.inventory2)\n",
        "                open_cash_t1=state_class_obj.open_cash-state_class_obj.Stock2Price\n",
        "                \n",
        "                if(state_class_obj.open_cash<5000):\n",
        "                    reward=-100000\n",
        "                elif (abs(change_percent_stock2)<=2):\n",
        "                    reward=-10000\n",
        "                else:\n",
        "                    reward=-change_percent_stock2*100\n",
        " \n",
        "        \n",
        "        if action == 4:  #sell stock 2\n",
        "            if state_class_obj.Stock2Blnc <1 :\n",
        "                    #print(\"sold stock 2 when it did not have stock 2, so bankrupt, end of episode\")\n",
        "                    reward=-200000\n",
        "                    done = True\n",
        "                #end episode\n",
        "            else:\n",
        "                #print(\"In sell stock 2\")\n",
        "                bought_price2=agent.inventory2.pop(0)\n",
        "                Bal_stock1_t1= len(agent.inventory1)\n",
        "                Bal_stock2_t1=len(agent.inventory2)\n",
        "                open_cash_t1=state_class_obj.open_cash+state_class_obj.Stock2Price\n",
        "    \n",
        "              \n",
        "                if(state_class_obj.Stock2Blnc<10):\n",
        "                    reward=-100000\n",
        "                elif (abs(change_percent_stock2)<=2):\n",
        "                    reward=-10000\n",
        "                else:\n",
        "                    reward=change_percent_stock2*100 \n",
        "                \n",
        "                \n",
        "                total_profit += state_class_obj.Stock2Price - bought_price2\n",
        "\n",
        "               # print(\"reward for selling stock2: \" + str(reward))\n",
        "            \n",
        "        \n",
        "        \n",
        "        #print(\"reward:  \"+str(reward))\n",
        "        #if done!= False:done = True if t == datasize\n",
        "        if t == datasize-1:\n",
        "            #print(\"t==datasize\")\n",
        "            done=True\n",
        "            next_state_class_obj=State(data1_train, data2_train, Bal_stock1_t1, Bal_stock2_t1, open_cash_t1,t)\n",
        "            next_state_array_obj=next_state_class_obj.getState()\n",
        "        else:\n",
        "            next_state_class_obj=State(data1_train, data2_train, Bal_stock1_t1, Bal_stock2_t1, open_cash_t1,t+1)\n",
        "            next_state_array_obj=next_state_class_obj.getState()\n",
        "            \n",
        "        agent.memory.append((state_array_obj, action, reward, next_state_array_obj, done))\n",
        "        #print(\"Action is \"+str(action)+\" reward is\" + str(reward))\n",
        "         \n",
        "        Bal_stock1=Bal_stock1_t1\n",
        "        Bal_stock2= Bal_stock2_t1\n",
        "        open_cash=open_cash_t1\n",
        "        \n",
        "        \n",
        "      #  print(\"total_profit on day basis \" + str(total_profit) +\"on day\"+str(t) + \"stock 1 number: \" + \n",
        "        #      str(len(agent.inventory1))+\"/\"+str(next_state_class_obj.Stock1Blnc)+\" stock2 number:\"+\n",
        "         #         str(len(agent.inventory2)) +\"/\"+str(next_state_class_obj.Stock2Blnc)+\n",
        "          #        \"open cash: \"+str(next_state_class_obj.open_cash))\n",
        "        \n",
        "       # print(\"doneAction\" + str(done))\n",
        "       # print(\"--------------------------------\") \n",
        "       \n",
        "        \n",
        "        \n",
        "        if done==True:\n",
        "            #print(\"--------------------------------\")\n",
        "           # print(\"Total Profit: \" + formatPrice(total_profit))\n",
        "           # print(\"Total No. of days played: \" + str(t)+ \"  out of overall days:  \" + str(datasize))\n",
        "           # print(\"Total portfolio value: \" + str(next_state_class_obj.portfolio_value)+ \n",
        "             #     \"  stock 1 number: \" + str(len(agent.inventory1))\n",
        "            #      +\"  stock 2 number: \"+str(len(agent.inventory2))+\"  open cash\"+str(next_state_class_obj.open_cash))\n",
        "\n",
        "            total_Prof.append(total_profit)\n",
        "            total_stock1bal.append(len(agent.inventory1))\n",
        "            total_stock2bal.append(len(agent.inventory2))\n",
        "            total_open_cash.append(state_class_obj.open_cash)\n",
        "            total_port_value.append(state_class_obj.portfolio_value)\n",
        "            total_days_played.append(t)\n",
        "\n",
        "\n",
        "            print(\"--------------------------------\")\n",
        "            state_class_obj.reset()\n",
        "            break\n",
        "           \n",
        "          \n",
        "\n",
        "        if len(agent.memory) > batch_size:\n",
        "            agent.expReplay(batch_size)\n",
        "\n",
        "\n",
        "    if e % 10 == 0:\n",
        "        agent.model.save(\"models/model_ep\" + str(e))\n",
        "        \n",
        "\n",
        "        \n",
        "#print(\"Total Apple stocks in episodes\"+ str(total_stock1bal))\n",
        "#print(\"Total Amazon stocks in episodes\"+ str(total_stock2bal))\n",
        "#print(\"Total Open cash in episodes\"+ str(total_open_cash))\n",
        "#print(\"Total Portfolio value in episodes\"+ str(total_port_value))\n",
        "#print(\"Total Days in episodes\"+ str(total_days_played))\n",
        "#print(\"Benchmark_Profit is  \" + str(int(Benchmark_Portfolio_Value)) +\"   with Apple Stocks: \" + str(Bench_Stock1_Bal) + \n",
        "    #  \"   and Amazon stocks: \"+ str(Bench_Stock2_Bal) )\n",
        "\n",
        "\n",
        "\n"
      ],
      "execution_count": 22,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "..........\n",
            "Episode 0/51\n",
            "WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
            "Instructions for updating:\n",
            "Colocations handled automatically by placer.\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 1/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 2/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 3/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 4/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 5/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 6/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 7/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 8/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 9/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 10/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 11/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 12/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 13/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 14/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 15/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 16/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 17/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 18/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 19/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 20/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 21/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 22/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 23/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 24/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 25/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 26/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 27/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 28/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 29/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 30/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 31/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 32/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 33/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 34/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 35/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 36/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 37/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 38/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 39/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 40/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 41/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 42/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 43/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 44/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 45/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 46/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 47/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 48/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 49/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 50/51\n",
            "--------------------------------\n",
            "..........\n",
            "Episode 51/51\n",
            "--------------------------------\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "p79QQOlVvjxT",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "_MP-Da74vjxe",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 139
        },
        "outputId": "a5405b77-bc56-40a0-a28e-defebb20ce7e"
      },
      "source": [
        "print(\"Total Apple stocks in episodes\"+ str(total_stock1bal))\n",
        "print(\"Total Amazon stocks in episodes\"+ str(total_stock2bal))\n",
        "print(\"Total Open cash in episodes\"+ str(total_open_cash))\n",
        "print(\"Total Portfolio value in episodes\"+ str(total_port_value))\n",
        "print(\"Total Days in episodes\"+ str(total_days_played))\n",
        "\n",
        "print(\"Benchmark_Profit is  \" + str(int(Training_Benchmark_Portfolio_Value)) +\"   with remaining Apple Stocks: \" + str(remaining_stock1) + \n",
        "      \"   and remaining Amazon stocks: \"+ str(remaining_stock2) )"
      ],
      "execution_count": 23,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Total Apple stocks in episodes[4464, 3229, 4462, 3216, 3503, 4839, 3214, 3217, 3221, 4470, 3760, 5664, 4449, 4459, 5717, 4455, 4467, 3309, 5160, 4460, 5649, 4415, 4466, 5524, 4446, 4458, 5693, 5693, 4465, 4468, 4190, 3204, 5707, 3211, 3296, 4460, 5677, 4475, 4467, 5681, 4459, 3258, 3212, 4470, 4448, 5682, 3200, 5673, 3937, 4462, 3238, 3224]\n",
            "Total Amazon stocks in episodes[35, 1267, 0, 1273, 1554, 1279, 1284, 1262, 1269, 28, 806, 1283, 1484, 1493, 1256, 1489, 521, 1278, 1272, 1489, 1280, 1468, 1504, 1427, 1269, 1482, 1267, 1289, 1509, 1478, 1268, 1250, 1278, 1293, 1271, 1415, 1266, 6, 1264, 1276, 39, 1222, 1279, 1493, 22, 1258, 1268, 1267, 563, 1488, 1257, 1268]\n",
            "Total Open cash in episodes[44076.93894999998, 7268.380680000001, 44932.53547999995, 6912.232890000002, 3363.91558, 4609.869969999995, 6814.186959999996, 7140.5901399999975, 7332.147680000006, 44556.76516999996, 29922.17260999999, 3139.1559700000043, 39.926680000003415, 66.12863000000641, 3403.69516, 59.07742000000104, 37917.385579999995, 7165.03409, 3250.1431799999846, 17.19764000000407, 2798.4388200000017, 46.34897000000216, 5.226640000007706, 554.0143400000044, 5451.441340000002, 43.86877000000765, 3044.5527500000003, 2575.82876999999, 21.022630000004114, 57.28411000000383, 5482.143300000001, 7219.788569999997, 3121.2762800000055, 6763.643309999997, 7218.450930000009, 14.864999999996996, 3355.6097599999985, 44858.413689999965, 5186.261739999999, 2947.7639900000004, 44192.16791999997, 7168.903810000001, 6837.869360000002, 30.51451000000023, 44841.22095999996, 3137.1255200000037, 7015.759019999993, 3081.8805700000003, 16156.654199999986, 51.727220000002745, 6983.52561, 6556.336620000006]\n",
            "Total Portfolio value in episodes[50649.098949999985, 53148.91068, 50115.148479999945, 52975.93789, 59085.79558, 52826.92496999999, 53240.02196, 52840.96014, 53269.317680000015, 50904.175169999966, 61165.017609999995, 52481.69097000001, 104071.75188, 105296.60023, 51915.315160000006, 99634.89192000001, 60599.20058, 53506.50409, 51620.81817999999, 104979.88164, 52023.47882, 98188.39847, 109714.55184, 54500.00934, 52863.53134000001, 99122.87617, 51891.79275, 52152.14876999999, 78199.88163, 97733.56251, 52552.613300000005, 52506.81357, 52349.92628000001, 53484.12331, 53312.27593000001, 98053.21099999998, 52150.42976, 50482.76868999997, 52457.95674, 52078.80399, 50890.86291999997, 51593.078810000006, 53095.59436, 97463.36050999998, 50963.28095999996, 51672.85052000001, 52894.484019999996, 51905.02057, 39591.69919999999, 97165.93282, 52543.50061, 52463.98162000001]\n",
            "Total Days in episodes[1499, 1499, 1497, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 458, 450, 1499, 448, 1499, 1499, 1499, 450, 1499, 449, 457, 1499, 1499, 449, 1499, 1499, 442, 452, 1499, 1499, 1499, 1499, 1499, 461, 1499, 1499, 1499, 1499, 1499, 1499, 1499, 453, 1499, 1499, 1499, 1499, 1499, 453, 1499, 1499]\n",
            "Benchmark_Profit is  52655   with remaining Apple Stocks: 6.0   and remaining Amazon stocks: 9.0\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "JRjTlKE9vjxo",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "pd_data1_test=pd_data1_test.reset_index(drop=True)\n",
        "pd_data2_test=pd_data2_test.reset_index(drop=True)"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Sm-hkAACvjxz",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 204
        },
        "outputId": "36268331-b957-4cf1-fe13-74839d78e4b4"
      },
      "source": [
        "pd_data1_test.head()"
      ],
      "execution_count": 25,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Date</th>\n",
              "      <th>Open</th>\n",
              "      <th>High</th>\n",
              "      <th>Low</th>\n",
              "      <th>Close</th>\n",
              "      <th>Volume</th>\n",
              "      <th>OpenInt</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>2003-05-15</td>\n",
              "      <td>1.1910</td>\n",
              "      <td>1.2076</td>\n",
              "      <td>1.1820</td>\n",
              "      <td>1.1999</td>\n",
              "      <td>79866509</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>2003-05-16</td>\n",
              "      <td>1.1898</td>\n",
              "      <td>1.2167</td>\n",
              "      <td>1.1704</td>\n",
              "      <td>1.2037</td>\n",
              "      <td>94069639</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2003-05-19</td>\n",
              "      <td>1.1871</td>\n",
              "      <td>1.1935</td>\n",
              "      <td>1.1563</td>\n",
              "      <td>1.1589</td>\n",
              "      <td>124591981</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>2003-05-20</td>\n",
              "      <td>1.1589</td>\n",
              "      <td>1.1628</td>\n",
              "      <td>1.1271</td>\n",
              "      <td>1.1385</td>\n",
              "      <td>116368335</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>2003-05-21</td>\n",
              "      <td>1.1385</td>\n",
              "      <td>1.1577</td>\n",
              "      <td>1.1320</td>\n",
              "      <td>1.1437</td>\n",
              "      <td>85352801</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "        Date    Open    High     Low   Close     Volume  OpenInt\n",
              "0 2003-05-15  1.1910  1.2076  1.1820  1.1999   79866509        0\n",
              "1 2003-05-16  1.1898  1.2167  1.1704  1.2037   94069639        0\n",
              "2 2003-05-19  1.1871  1.1935  1.1563  1.1589  124591981        0\n",
              "3 2003-05-20  1.1589  1.1628  1.1271  1.1385  116368335        0\n",
              "4 2003-05-21  1.1385  1.1577  1.1320  1.1437   85352801        0"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 25
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "9xzfMOoqvjx5",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 204
        },
        "outputId": "698880ad-92f4-49f4-9f5e-2739a4f67482"
      },
      "source": [
        "pd_data2_test.head()"
      ],
      "execution_count": 26,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Date</th>\n",
              "      <th>Open</th>\n",
              "      <th>High</th>\n",
              "      <th>Low</th>\n",
              "      <th>Close</th>\n",
              "      <th>Volume</th>\n",
              "      <th>OpenInt</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>2003-05-15</td>\n",
              "      <td>32.64</td>\n",
              "      <td>32.75</td>\n",
              "      <td>32.20</td>\n",
              "      <td>32.63</td>\n",
              "      <td>5222009</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>2003-05-16</td>\n",
              "      <td>32.51</td>\n",
              "      <td>33.16</td>\n",
              "      <td>32.38</td>\n",
              "      <td>33.05</td>\n",
              "      <td>7654816</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>2003-05-19</td>\n",
              "      <td>32.70</td>\n",
              "      <td>32.97</td>\n",
              "      <td>31.40</td>\n",
              "      <td>31.56</td>\n",
              "      <td>9798178</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>2003-05-20</td>\n",
              "      <td>31.56</td>\n",
              "      <td>32.13</td>\n",
              "      <td>31.17</td>\n",
              "      <td>31.48</td>\n",
              "      <td>8093492</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>2003-05-21</td>\n",
              "      <td>31.48</td>\n",
              "      <td>31.84</td>\n",
              "      <td>31.16</td>\n",
              "      <td>31.75</td>\n",
              "      <td>5217622</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "        Date   Open   High    Low  Close   Volume  OpenInt\n",
              "0 2003-05-15  32.64  32.75  32.20  32.63  5222009        0\n",
              "1 2003-05-16  32.51  33.16  32.38  33.05  7654816        0\n",
              "2 2003-05-19  32.70  32.97  31.40  31.56  9798178        0\n",
              "3 2003-05-20  31.56  32.13  31.17  31.48  8093492        0\n",
              "4 2003-05-21  31.48  31.84  31.16  31.75  5217622        0"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 26
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "kbKhomjwvjx_",
        "colab_type": "text"
      },
      "source": [
        "## Benchmark model for Actual Test Run"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "9mIdPcEjvjyB",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 51
        },
        "outputId": "6ec22bdd-8b79-4e8d-97e2-aa04922fd92d"
      },
      "source": [
        "#Initialize state and set benchmarking model\n",
        "\n",
        "import datetime\n",
        "\n",
        "#print(df_data1)\n",
        "total_Prof=[]\n",
        "done=False\n",
        "\n",
        "Act_datasize = test\n",
        "batch_size = 64\n",
        "\n",
        "\n",
        "#To be removed\n",
        "#Sstart_balance=500\n",
        "\n",
        "#Benchmark Model\n",
        "\n",
        "# Take Opening price in a new variable\n",
        "data1_test=pd_data1_test['Open']\n",
        "data2_test=pd_data2_test['Open']\n",
        "\n",
        "data1_date=pd_data1_test['Date']\n",
        "\n",
        "\n",
        "\n",
        "Act_Bench_Stock1_Bal=int(np.floor((start_balance/4)/data1_test[0]))\n",
        "Act_Bench_Stock2_Bal=int(np.floor((start_balance/4)/data2_test[0]))\n",
        "Act_Bench_Open_cash=start_balance/2\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "### Program to calculate benchmark profit\n",
        "\n",
        "\n",
        "#sell 10% of stock in 10 intervals\n",
        "\n",
        "interval=int(Act_datasize/10)\n",
        "Total_Stock1_Amount= 0\n",
        "Total_Stock2_Amount= 0\n",
        "stocks2Value = 0\n",
        "stocks1Value = 0\n",
        "\n",
        "Act_stocks1=np.floor(Act_Bench_Stock1_Bal /10)\n",
        "Act_stocks2=np.floor(Act_Bench_Stock2_Bal /10)\n",
        "#print(str(Act_stocks1))\n",
        "#print(str(Act_stocks2))\n",
        "\n",
        "remaining_stock1=Act_Bench_Stock1_Bal\n",
        "remaining_stock2=Act_Bench_Stock2_Bal\n",
        "ttl=0\n",
        "\n",
        "Benchmark_Port_Value=[]\n",
        "\n",
        "\n",
        "for j in range (interval,Act_datasize+1,interval):\n",
        "        #print(\"closing prices : \" + str(data1_test[j-1]) )\n",
        "        Price_closing_Stock1=data1_test[j-1]\n",
        "        Price_closing_Stock2=data2_test[j-1]\n",
        "        date_stock1=data1_date[j-1].strftime('%Y-%m-%d')\n",
        "        #print(date_stock1)\n",
        "        #np.array(pd_data1_test['Date'])\n",
        "        \n",
        "        stocks1Value= Act_stocks1 * Price_closing_Stock1\n",
        "        stocks2Value= Act_stocks2 * Price_closing_Stock2\n",
        "        remaining_stock1=remaining_stock1-Act_stocks1\n",
        "        remaining_stock2=remaining_stock2-Act_stocks2\n",
        "        #print(\"J is:\"+ str(j))\n",
        "        \n",
        "        \n",
        "        \n",
        "        Stock1_Port_value=remaining_stock1*Price_closing_Stock1\n",
        "        Stock2_Port_value=remaining_stock2*Price_closing_Stock2\n",
        "        Act_Bench_Open_cash=Act_Bench_Open_cash+stocks1Value+stocks2Value #Adding 10% sold value into open cash\n",
        "        \n",
        "        Total_Portfolio_value=Act_Bench_Open_cash+Stock1_Port_value+Stock2_Port_value\n",
        "        Benchmark_Port_Value.append([date_stock1,Total_Portfolio_value])\n",
        "        \n",
        "\n",
        "\n",
        "\n",
        "#print (\"total_Test_Benchmark_amount : \" +  str(Total_Portfolio_value))\n",
        "\n",
        "Test_Benchmark_Portfolio_Value= Total_Portfolio_value\n",
        "\n",
        "\n",
        "\n",
        "\n",
        "print(\"Benchmark_Profit is\" + str(Test_Benchmark_Portfolio_Value) +\"with remaining Apple Stocks: \" + str(remaining_stock1) + \n",
        "      \" and remaining Amazon stocks: \"+ str(remaining_stock2) )\n",
        "\n",
        "\n",
        "#Define arrays to store per episode values \n",
        "total_Prof=[]\n",
        "total_stock1bal=[]\n",
        "total_stock2bal=[]\n",
        "total_open_cash=[]\n",
        "total_port_value=[]\n",
        "total_days_played=[]\n",
        "\n",
        "\n",
        "print(episode_count)\n"
      ],
      "execution_count": 27,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Benchmark_Profit is13725.1903with remaining Apple Stocks: 9.0 and remaining Amazon stocks: 6.0\n",
            "51\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "RS58DJOBvjyH",
        "colab_type": "text"
      },
      "source": [
        "## Actual test Run"
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "17F41h0JvjyI",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "O2JLe6qqvjyN",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "#Actual run\n",
        "\n",
        "import csv\n",
        "episode_count=0\n",
        "\n",
        "\n",
        "#Define arrays to store per episode values \n",
        "total_Prof=[]\n",
        "total_stock1bal=[]\n",
        "total_stock2bal=[]\n",
        "total_open_cash=[]\n",
        "total_port_value=[]\n",
        "total_days_played=[]\n",
        "\n",
        "from keras.models import load_model\n",
        "\n",
        "model_name='model_ep10'\n",
        "\n",
        "model = load_model(\"models/\" + model_name)\n",
        "\n",
        "Act_Bench_Stock1_Bal=int(np.floor((start_balance/4)/data1_test[0]))\n",
        "Act_Bench_Stock2_Bal=int(np.floor((start_balance/4)/data2_test[0]))\n",
        "Act_Bench_Open_cash=start_balance/2\n"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "2rN_xYhTvjyR",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 25602
        },
        "outputId": "8cd4196e-19d7-4047-e480-bf3352ffff6b"
      },
      "source": [
        "#Actual run\n",
        "\n",
        "import csv\n",
        "episode_count=0\n",
        "\n",
        "\n",
        "#Define arrays to store per episode values \n",
        "Act_total_Prof=[]\n",
        "Act_total_stock1bal=[]\n",
        "Act_total_stock2bal=[]\n",
        "Act_total_open_cash=[]\n",
        "Act_total_port_value=[]\n",
        "Act_total_days_played=[]\n",
        "actions_done_perday=[]\n",
        "portfolio_value=[]\n",
        "\n",
        "from keras.models import load_model\n",
        "\n",
        "model_name='model_ep50'\n",
        "\n",
        "model = load_model(\"models/\" + model_name)\n",
        "\n",
        "initial_cash = state_class_obj.portfolio_value\n",
        "\n",
        "for e in range(1): #here we run only for 1 episode, as it is Test run\n",
        "\n",
        "    Bal_stock1_t2=Act_Bench_Stock1_Bal\n",
        "    Bal_stock2_t2=Act_Bench_Stock2_Bal\n",
        "    done=False\n",
        "    open_cash_t2= Act_Bench_Open_cash  \n",
        "    total_profit = 0\n",
        "    reward = 0\n",
        "    \n",
        "    #Initialize Agent\n",
        "    agent_test = Agent(8, is_eval=True, model_name=model_name)\n",
        "    #agent = Agent(8)\n",
        "\n",
        "    agent_test.inventory1 =[]\n",
        "    agent_test.inventory2 =[]\n",
        "    for i in range(Bal_stock1_t2):\n",
        "        agent_test.inventory1.append(data1_test[0])\n",
        "    for i in range(Bal_stock2_t2):\n",
        "        agent_test.inventory2.append(data2_test[0]) \n",
        "    \n",
        "    \n",
        "    #Timestep delta to make sure that with time reward increases for taking action\n",
        "    timestep_delta=0\n",
        "    \n",
        "    #Running episode over all days in the datasize\n",
        "    for t in range(Act_datasize):\n",
        "        print(\"..........\")\n",
        "        \n",
        "        print(pd_data1_test.iloc[t,0])\n",
        "        state_class_obj= State(data1_test, data2_test, Bal_stock1_t2, Bal_stock2_t2, open_cash_t2,t)\n",
        "        state_array_obj=state_class_obj.getState()\n",
        "        action = agent_test.act(state_array_obj)\n",
        "        \n",
        "        print(\"Total portfolio value: \" + str(state_class_obj.portfolio_value)+ \n",
        "                  \"  stock 1 number: \" + str(len(agent_test.inventory1))\n",
        "                   +\"  stock 2 number: \"+str(len(agent_test.inventory2))+\"  open cash\"+str(state_class_obj.open_cash))\n",
        "\n",
        "\n",
        "        \n",
        "        #reward should be more as time goes further. We will remove reward_timedelta from actual reward \n",
        "        #reward_timedelta=(datasize-t)*timestep_delta\n",
        "        \n",
        "                   \n",
        "        change_percent_stock1=(state_class_obj.Stock1Price-state_class_obj.fiveday_stock1)/state_class_obj.fiveday_stock1*100\n",
        "        change_percent_stock2=(state_class_obj.Stock2Price-state_class_obj.fiveday_stock2)/state_class_obj.fiveday_stock2*100\n",
        "        \n",
        "        #print(\"change_percent_stock1:  \"+str(change_percent_stock1))\n",
        "        #print(\"change_percent_stock2:  \"+str(change_percent_stock2))\n",
        "        \n",
        "        \n",
        "        if action == 0:  #buy stock 1\n",
        "            if state_class_obj.Stock1Price > state_class_obj.open_cash:\n",
        "                '''\n",
        "                print(\"Buy stock 1 when it did not have cash, so bankrupt, end of episode\")\n",
        "                reward=-reward_timedelta*10\n",
        "                done = True\n",
        "                '''\n",
        "                #If agent is trying to buy when it has no cash but has stock1 and stock2 balance then, \n",
        "                #it should pick from other actions\n",
        "                #if (state_class_obj.Stock1Blnc>1) and  (state_class_obj.Stock2Blnc>1):\n",
        "                 #   action=random.sample([1, 2, 4, 5, 6],  1)  # Choose 1 elements from sell actions\n",
        "                #else:    \n",
        "                #print(\"Bankrupt\")\n",
        "              \n",
        "                done = True\n",
        "                #end episode\n",
        "                     \n",
        "            else:\n",
        "                #print(\"In Buy stock 1\")\n",
        "                agent_test.inventory1.append(data1_test[t])\n",
        "                Bal_stock1_t2= len(agent_test.inventory1)\n",
        "                Bal_stock2_t2=len(agent_test.inventory2)\n",
        "                open_cash_t2=state_class_obj.open_cash-state_class_obj.Stock1Price #Here we are buying 1 stock\n",
        "                \n",
        "                \n",
        "               \n",
        "                \n",
        "        if action == 1:  #sell stock 1\n",
        "            if state_class_obj.Stock1Blnc <1 :\n",
        "               # print(\"sold stock 2 when it did not have stock 2, so bankrupt, end of episode\")\n",
        "                \n",
        "                done = True\n",
        "                #end episode\n",
        "            else:\n",
        "                #print(\"In sell stock 1\")\n",
        "                agent_test.inventory1.pop(0)\n",
        "\n",
        "                Bal_stock1_t2= len(agent_test.inventory1)\n",
        "                Bal_stock2_t2=len(agent_test.inventory2)\n",
        "                open_cash_t2=state_class_obj.open_cash+state_class_obj.Stock1Price #State[0] is the price of stock 1. Here we are buying 1 stoc\n",
        "          \n",
        "                 \n",
        "        \n",
        "\n",
        "\n",
        "        \n",
        "        if action == 2:             # Do nothing action    \n",
        "                Bal_stock1_t2= len(agent_test.inventory1)\n",
        "                Bal_stock2_t2=len(agent_test.inventory2)\n",
        "               # print(\"Do nothing\")\n",
        "        \n",
        "        \n",
        "        if action == 3:  #buy stock 2\n",
        "            if state_class_obj.Stock2Price > state_class_obj.open_cash:\n",
        "                '''\n",
        "                print(\"Buy stock 2 when it did not have cash, so bankrupt, end of episode\")\n",
        "                reward=-reward_timedelta*10\n",
        "                done = True\n",
        "                \n",
        "                '''\n",
        "                #If agent is trying to buy when it has no cash but has stock1 and stock2 balance then, \n",
        "                #it should pick from other actions\n",
        "                #if (state_class_obj.Stock1Blnc>1) and  (state_class_obj.Stock2Blnc>1):\n",
        "                 #   action=random.sample([1, 2, 4, 5, 6],  1)  # Choose 1 elements from sell actions\n",
        "                #else:    \n",
        "                #print(\"Bankrupt\")\n",
        "\n",
        "                done = True\n",
        "                     #end episode   \n",
        "            else:\n",
        "                #print(\"In Buy stock 2\")\n",
        "                agent.inventory2.append(data2_test[t])\n",
        "                Bal_stock1_t2= len(agent_test.inventory1)\n",
        "                Bal_stock2_t2=len(agent_test.inventory2)\n",
        "                open_cash_t2=state_class_obj.open_cash-state_class_obj.Stock2Price\n",
        "                \n",
        "              \n",
        "        \n",
        "        if action == 4:  #sell stock 2\n",
        "            if state_class_obj.Stock2Blnc <1 :\n",
        "                    #print(\"sold stock 2 when it did not have stock 2, so bankrupt, end of episode\")\n",
        "                    done = True\n",
        "                #end episode\n",
        "            else:\n",
        "                #print(\"In sell stock 2\")\n",
        "                agent_test.inventory2.pop(0)\n",
        "                Bal_stock1_t2= len(agent_test.inventory1)\n",
        "                Bal_stock2_t2=len(agent_test.inventory2)\n",
        "                open_cash_t2=state_class_obj.open_cash+state_class_obj.Stock2Price\n",
        "    \n",
        "\n",
        "               # print(\"reward for selling stock2: \" + str(reward))\n",
        "            \n",
        "        \n",
        "        \n",
        "        #print(\"reward:  \"+str(reward))\n",
        "        #if done!= False:done = True if t == datasize\n",
        "        if t == Act_datasize-1:\n",
        "            #print(\"t==datasize\")\n",
        "            done=True\n",
        "            next_state_class_obj=State(data1_test, data2_test, Bal_stock1_t2, Bal_stock2_t2, open_cash_t2,t)\n",
        "            next_state_array_obj=next_state_class_obj.getState()\n",
        "        else:\n",
        "            #print(\"t!=datasize\"+str(open_cash_t2))\n",
        "            next_state_class_obj=State(data1_test, data2_test, Bal_stock1_t2, Bal_stock2_t2, open_cash_t2,t+1)\n",
        "            next_state_array_obj=next_state_class_obj.getState()\n",
        "            \n",
        "        #print(\"Action is \"+str(action)+\" reward is\" + str(reward))\n",
        "\n",
        "\n",
        "       \n",
        "        \n",
        "        actions_done_perday.append(action)\n",
        "        portfolio_value.append(next_state_class_obj.portfolio_value)\n",
        "\n",
        "        if done==True:\n",
        "            print(\"--------------------------------\")\n",
        "            print(\"Total Profit: \" + formatPrice(next_state_class_obj.portfolio_value - initial_cash))\n",
        "            print(\"Total No. of days played: \" + str(t)+ \"  out of overall days:  \" + str(Act_datasize))\n",
        "            print(\"Total portfolio value: \" + str(next_state_class_obj.portfolio_value)+ \n",
        "                  \"  stock 1 number: \" + str(len(agent_test.inventory1))\n",
        "                   +\"  stock 2 number: \"+str(len(agent_test.inventory2))+\"  open cash\"+str(next_state_class_obj.open_cash))\n",
        "\n",
        "            Act_total_Prof.append(total_profit)\n",
        "            Act_total_stock1bal.append(len(agent_test.inventory1))\n",
        "            Act_total_stock2bal.append(len(agent_test.inventory2))\n",
        "            Act_total_open_cash.append(state_class_obj.open_cash)\n",
        "            Act_total_port_value.append(state_class_obj.portfolio_value)\n",
        "            Act_total_days_played.append(t)\n",
        "\n",
        "\n",
        "            print(\"--------------------------------\")\n",
        "            state_class_obj.reset()\n",
        "            break\n",
        "\n"
      ],
      "execution_count": 33,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "..........\n",
            "2003-05-15 00:00:00\n",
            "Total portfolio value: 9980.548999999999  stock 1 number: 2099  stock 2 number: 76  open cash5000.0\n",
            "..........\n",
            "2003-05-16 00:00:00\n",
            "Total portfolio value: 9968.151399999999  stock 1 number: 2098  stock 2 number: 76  open cash5001.191\n",
            "..........\n",
            "2003-05-19 00:00:00\n",
            "Total portfolio value: 9976.9295  stock 1 number: 2097  stock 2 number: 76  open cash5002.3808\n",
            "..........\n",
            "2003-05-20 00:00:00\n",
            "Total portfolio value: 9831.1823  stock 1 number: 2096  stock 2 number: 76  open cash5003.5679\n",
            "..........\n",
            "2003-05-21 00:00:00\n",
            "Total portfolio value: 9782.364300000001  stock 1 number: 2095  stock 2 number: 76  open cash5004.7268\n",
            "..........\n",
            "2003-05-22 00:00:00\n",
            "Total portfolio value: 9819.0081  stock 1 number: 2094  stock 2 number: 76  open cash5005.8653\n",
            "..........\n",
            "2003-05-23 00:00:00\n",
            "Total portfolio value: 9959.1946  stock 1 number: 2093  stock 2 number: 76  open cash5007.0115000000005\n",
            "..........\n",
            "2003-05-27 00:00:00\n",
            "Total portfolio value: 9887.9874  stock 1 number: 2092  stock 2 number: 76  open cash5008.1782\n",
            "..........\n",
            "2003-05-28 00:00:00\n",
            "Total portfolio value: 10136.997800000001  stock 1 number: 2091  stock 2 number: 76  open cash5009.3283\n",
            "..........\n",
            "2003-05-29 00:00:00\n",
            "Total portfolio value: 10108.2888  stock 1 number: 2090  stock 2 number: 76  open cash5010.5128\n",
            "..........\n",
            "2003-05-30 00:00:00\n",
            "Total portfolio value: 10141.4921  stock 1 number: 2089  stock 2 number: 76  open cash5011.6832\n",
            "..........\n",
            "2003-06-02 00:00:00\n",
            "Total portfolio value: 10206.6265  stock 1 number: 2088  stock 2 number: 76  open cash5012.8433\n",
            "..........\n",
            "2003-06-03 00:00:00\n",
            "Total portfolio value: 9982.5151  stock 1 number: 2087  stock 2 number: 76  open cash5014.002200000001\n",
            "..........\n",
            "2003-06-04 00:00:00\n",
            "Total portfolio value: 9985.9897  stock 1 number: 2086  stock 2 number: 76  open cash5015.1189\n",
            "..........\n",
            "2003-06-05 00:00:00\n",
            "Total portfolio value: 10016.7062  stock 1 number: 2085  stock 2 number: 76  open cash5016.2267\n",
            "..........\n",
            "2003-06-06 00:00:00\n",
            "Total portfolio value: 10123.390599999999  stock 1 number: 2084  stock 2 number: 76  open cash5017.3434\n",
            "..........\n",
            "2003-06-09 00:00:00\n",
            "Total portfolio value: 9897.6293  stock 1 number: 2083  stock 2 number: 76  open cash5018.4792\n",
            "..........\n",
            "2003-06-10 00:00:00\n",
            "Total portfolio value: 9858.0161  stock 1 number: 2082  stock 2 number: 76  open cash5019.5639\n",
            "..........\n",
            "2003-06-11 00:00:00\n",
            "Total portfolio value: 9886.0554  stock 1 number: 2081  stock 2 number: 76  open cash5020.646\n",
            "..........\n",
            "2003-06-12 00:00:00\n",
            "Total portfolio value: 10043.5034  stock 1 number: 2080  stock 2 number: 76  open cash5021.743399999999\n",
            "..........\n",
            "2003-06-13 00:00:00\n",
            "Total portfolio value: 10077.2988  stock 1 number: 2079  stock 2 number: 76  open cash5022.867899999999\n",
            "..........\n",
            "2003-06-16 00:00:00\n",
            "Total portfolio value: 9993.4388  stock 1 number: 2078  stock 2 number: 76  open cash5024.004999999999\n",
            "..........\n",
            "2003-06-17 00:00:00\n",
            "Total portfolio value: 10205.6336  stock 1 number: 2077  stock 2 number: 76  open cash5025.132099999999\n",
            "..........\n",
            "2003-06-18 00:00:00\n",
            "Total portfolio value: 10175.652399999999  stock 1 number: 2076  stock 2 number: 76  open cash5026.311599999999\n",
            "..........\n",
            "2003-06-19 00:00:00\n",
            "Total portfolio value: 10320.462399999999  stock 1 number: 2075  stock 2 number: 76  open cash5027.492399999999\n",
            "..........\n",
            "2003-06-20 00:00:00\n",
            "Total portfolio value: 10320.4624  stock 1 number: 2074  stock 2 number: 76  open cash5028.731999999999\n",
            "..........\n",
            "2003-06-23 00:00:00\n",
            "Total portfolio value: 10255.446899999999  stock 1 number: 2073  stock 2 number: 76  open cash5029.971599999999\n",
            "..........\n",
            "2003-06-24 00:00:00\n",
            "Total portfolio value: 10300.832499999999  stock 1 number: 2072  stock 2 number: 76  open cash5031.207699999999\n",
            "..........\n",
            "2003-06-25 00:00:00\n",
            "Total portfolio value: 10205.838199999998  stock 1 number: 2071  stock 2 number: 76  open cash5032.453599999999\n",
            "..........\n",
            "2003-06-26 00:00:00\n",
            "Total portfolio value: 10188.234199999999  stock 1 number: 2070  stock 2 number: 76  open cash5033.6561999999985\n",
            "..........\n",
            "2003-06-27 00:00:00\n",
            "Total portfolio value: 10380.784499999998  stock 1 number: 2069  stock 2 number: 76  open cash5034.853599999999\n",
            "..........\n",
            "2003-06-30 00:00:00\n",
            "Total portfolio value: 10293.711299999999  stock 1 number: 2068  stock 2 number: 76  open cash5036.089699999999\n",
            "..........\n",
            "2003-07-01 00:00:00\n",
            "Total portfolio value: 10309.322199999999  stock 1 number: 2067  stock 2 number: 76  open cash5037.285899999999\n",
            "..........\n",
            "2003-07-02 00:00:00\n",
            "Total portfolio value: 10414.962  stock 1 number: 2066  stock 2 number: 76  open cash5038.494799999999\n",
            "..........\n",
            "2003-07-03 00:00:00\n",
            "Total portfolio value: 10365.7195  stock 1 number: 2065  stock 2 number: 76  open cash5039.713999999998\n",
            "..........\n",
            "2003-07-07 00:00:00\n",
            "Total portfolio value: 10497.468299999997  stock 1 number: 2064  stock 2 number: 76  open cash5040.930699999998\n",
            "..........\n",
            "2003-07-08 00:00:00\n",
            "Total portfolio value: 10566.467799999999  stock 1 number: 2063  stock 2 number: 76  open cash5042.164099999998\n",
            "..........\n",
            "2003-07-09 00:00:00\n",
            "Total portfolio value: 10793.5068  stock 1 number: 2062  stock 2 number: 76  open cash5043.413999999998\n",
            "..........\n",
            "2003-07-10 00:00:00\n",
            "Total portfolio value: 10641.481399999997  stock 1 number: 2061  stock 2 number: 76  open cash5044.708399999998\n",
            "..........\n",
            "2003-07-11 00:00:00\n",
            "Total portfolio value: 10549.909399999997  stock 1 number: 2060  stock 2 number: 76  open cash5045.981399999998\n",
            "..........\n",
            "2003-07-14 00:00:00\n",
            "Total portfolio value: 10612.672299999998  stock 1 number: 2059  stock 2 number: 76  open cash5047.2401999999975\n",
            "..........\n",
            "2003-07-15 00:00:00\n",
            "Total portfolio value: 10697.032299999999  stock 1 number: 2058  stock 2 number: 76  open cash5048.522099999997\n",
            "..........\n",
            "2003-07-16 00:00:00\n",
            "Total portfolio value: 10559.476099999998  stock 1 number: 2057  stock 2 number: 76  open cash5049.803999999997\n",
            "..........\n",
            "2003-07-17 00:00:00\n",
            "Total portfolio value: 10533.484099999998  stock 1 number: 2056  stock 2 number: 76  open cash5051.059299999997\n",
            "..........\n",
            "2003-07-18 00:00:00\n",
            "Total portfolio value: 10562.468099999998  stock 1 number: 2055  stock 2 number: 76  open cash5052.352599999997\n",
            "..........\n",
            "2003-07-21 00:00:00\n",
            "Total portfolio value: 10414.227699999998  stock 1 number: 2054  stock 2 number: 76  open cash5053.690699999997\n",
            "..........\n",
            "2003-07-22 00:00:00\n",
            "Total portfolio value: 10512.255999999998  stock 1 number: 2053  stock 2 number: 76  open cash5055.016199999997\n",
            "..........\n",
            "2003-07-23 00:00:00\n",
            "Total portfolio value: 10676.469199999996  stock 1 number: 2052  stock 2 number: 76  open cash5056.352799999997\n",
            "..........\n",
            "2003-07-24 00:00:00\n",
            "Total portfolio value: 10940.395599999996  stock 1 number: 2051  stock 2 number: 76  open cash5057.693499999997\n",
            "..........\n",
            "2003-07-25 00:00:00\n",
            "Total portfolio value: 10835.655599999996  stock 1 number: 2050  stock 2 number: 76  open cash5059.040599999997\n",
            "..........\n",
            "2003-07-28 00:00:00\n",
            "Total portfolio value: 11034.856199999998  stock 1 number: 2049  stock 2 number: 76  open cash5060.3480999999965\n",
            "..........\n",
            "2003-07-29 00:00:00\n",
            "Total portfolio value: 11004.248199999996  stock 1 number: 2048  stock 2 number: 76  open cash5061.724999999997\n",
            "..........\n",
            "2003-07-30 00:00:00\n",
            "Total portfolio value: 10911.750199999997  stock 1 number: 2047  stock 2 number: 76  open cash5063.0683999999965\n",
            "..........\n",
            "2003-07-31 00:00:00\n",
            "Total portfolio value: 10924.494999999995  stock 1 number: 2046  stock 2 number: 76  open cash5064.397799999996\n",
            "..........\n",
            "2003-08-01 00:00:00\n",
            "Total portfolio value: 10962.797499999997  stock 1 number: 2045  stock 2 number: 76  open cash5065.725999999996\n",
            "..........\n",
            "2003-08-04 00:00:00\n",
            "Total portfolio value: 10772.335099999997  stock 1 number: 2044  stock 2 number: 76  open cash5067.070699999996\n",
            "..........\n",
            "2003-08-05 00:00:00\n",
            "Total portfolio value: 10844.632599999995  stock 1 number: 2043  stock 2 number: 76  open cash5068.3857999999955\n",
            "..........\n",
            "2003-08-06 00:00:00\n",
            "Total portfolio value: 10627.618199999994  stock 1 number: 2042  stock 2 number: 76  open cash5069.753399999995\n",
            "..........\n",
            "2003-08-07 00:00:00\n",
            "Total portfolio value: 10614.861799999995  stock 1 number: 2041  stock 2 number: 76  open cash5071.037799999995\n",
            "..........\n",
            "2003-08-08 00:00:00\n",
            "Total portfolio value: 10672.069799999994  stock 1 number: 2040  stock 2 number: 76  open cash5072.301799999995\n",
            "..........\n",
            "2003-08-11 00:00:00\n",
            "Total portfolio value: 10624.523899999995  stock 1 number: 2039  stock 2 number: 76  open cash5073.5889999999945\n",
            "..........\n",
            "2003-08-12 00:00:00\n",
            "Total portfolio value: 10613.739499999996  stock 1 number: 2038  stock 2 number: 76  open cash5074.858099999995\n",
            "..........\n",
            "2003-08-13 00:00:00\n",
            "Total portfolio value: 10725.576299999995  stock 1 number: 2037  stock 2 number: 76  open cash5076.123399999995\n",
            "..........\n",
            "2003-08-14 00:00:00\n",
            "Total portfolio value: 10746.713499999994  stock 1 number: 2036  stock 2 number: 76  open cash5077.395099999995\n",
            "..........\n",
            "2003-08-15 00:00:00\n",
            "Total portfolio value: 10736.899499999994  stock 1 number: 2035  stock 2 number: 76  open cash5078.689499999995\n",
            "..........\n",
            "2003-08-18 00:00:00\n",
            "Total portfolio value: 10743.085299999995  stock 1 number: 2034  stock 2 number: 76  open cash5079.967499999995\n",
            "..........\n",
            "2003-08-19 00:00:00\n",
            "Total portfolio value: 11036.504199999996  stock 1 number: 2033  stock 2 number: 76  open cash5081.239199999995\n",
            "..........\n",
            "2003-08-20 00:00:00\n",
            "Total portfolio value: 10980.854599999995  stock 1 number: 2032  stock 2 number: 76  open cash5082.544199999996\n",
            "..........\n",
            "2003-08-21 00:00:00\n",
            "Total portfolio value: 11180.516499999994  stock 1 number: 2031  stock 2 number: 76  open cash5083.836399999996\n",
            "..........\n",
            "2003-08-22 00:00:00\n",
            "Total portfolio value: 11442.423499999995  stock 1 number: 2030  stock 2 number: 76  open cash5085.183499999996\n",
            "..........\n",
            "2003-08-25 00:00:00\n",
            "Total portfolio value: 11195.169799999996  stock 1 number: 2029  stock 2 number: 76  open cash5086.579499999995\n",
            "..........\n",
            "2003-08-26 00:00:00\n",
            "Total portfolio value: 11253.333399999996  stock 1 number: 2028  stock 2 number: 76  open cash5087.910199999996\n",
            "..........\n",
            "2003-08-27 00:00:00\n",
            "Total portfolio value: 11282.723399999995  stock 1 number: 2027  stock 2 number: 76  open cash5089.239599999995\n",
            "..........\n",
            "2003-08-28 00:00:00\n",
            "Total portfolio value: 11342.948999999995  stock 1 number: 2026  stock 2 number: 76  open cash5090.578999999995\n",
            "..........\n",
            "2003-08-29 00:00:00\n",
            "Total portfolio value: 11453.003999999994  stock 1 number: 2025  stock 2 number: 76  open cash5091.943999999995\n",
            "..........\n",
            "2003-09-02 00:00:00\n",
            "Total portfolio value: 11565.507199999996  stock 1 number: 2024  stock 2 number: 76  open cash5093.365599999995\n",
            "..........\n",
            "2003-09-03 00:00:00\n",
            "Total portfolio value: 11664.071899999995  stock 1 number: 2023  stock 2 number: 76  open cash5094.816499999994\n",
            "..........\n",
            "2003-09-04 00:00:00\n",
            "Total portfolio value: 11605.900099999995  stock 1 number: 2022  stock 2 number: 76  open cash5096.276299999994\n",
            "..........\n",
            "2003-09-05 00:00:00\n",
            "Total portfolio value: 11608.130999999994  stock 1 number: 2021  stock 2 number: 76  open cash5097.759199999994\n",
            "..........\n",
            "2003-09-08 00:00:00\n",
            "Total portfolio value: 11540.398999999994  stock 1 number: 2020  stock 2 number: 76  open cash5099.214999999994\n",
            "..........\n",
            "2003-09-09 00:00:00\n",
            "Total portfolio value: 11608.158799999994  stock 1 number: 2019  stock 2 number: 76  open cash5100.654199999994\n",
            "..........\n",
            "2003-09-10 00:00:00\n",
            "Total portfolio value: 11492.094999999994  stock 1 number: 2018  stock 2 number: 76  open cash5102.097599999994\n",
            "..........\n",
            "2003-09-11 00:00:00\n",
            "Total portfolio value: 11487.534999999993  stock 1 number: 2017  stock 2 number: 76  open cash5103.521899999993\n",
            "..........\n",
            "2003-09-12 00:00:00\n",
            "Total portfolio value: 11420.819799999994  stock 1 number: 2016  stock 2 number: 76  open cash5104.946199999993\n",
            "..........\n",
            "2003-09-15 00:00:00\n",
            "Total portfolio value: 11558.253299999993  stock 1 number: 2015  stock 2 number: 76  open cash5106.388299999993\n",
            "..........\n",
            "2003-09-16 00:00:00\n",
            "Total portfolio value: 11423.987899999993  stock 1 number: 2014  stock 2 number: 76  open cash5107.8672999999935\n",
            "..........\n",
            "2003-09-17 00:00:00\n",
            "Total portfolio value: 11505.275299999994  stock 1 number: 2013  stock 2 number: 76  open cash5109.290199999993\n",
            "..........\n",
            "2003-09-18 00:00:00\n",
            "Total portfolio value: 11466.064099999992  stock 1 number: 2012  stock 2 number: 76  open cash5110.722899999993\n",
            "..........\n",
            "2003-09-19 00:00:00\n",
            "Total portfolio value: 11696.574099999994  stock 1 number: 2011  stock 2 number: 76  open cash5112.137999999994\n",
            "..........\n",
            "2003-09-22 00:00:00\n",
            "Total portfolio value: 11584.285099999994  stock 1 number: 2010  stock 2 number: 76  open cash5113.603099999994\n",
            "..........\n",
            "2003-09-23 00:00:00\n",
            "Total portfolio value: 11550.069699999993  stock 1 number: 2009  stock 2 number: 76  open cash5115.0232999999935\n",
            "..........\n",
            "2003-09-24 00:00:00\n",
            "Total portfolio value: 11800.216099999994  stock 1 number: 2008  stock 2 number: 76  open cash5116.432899999993\n",
            "..........\n",
            "2003-09-25 00:00:00\n",
            "Total portfolio value: 11634.179899999992  stock 1 number: 2007  stock 2 number: 76  open cash5117.855799999993\n",
            "..........\n",
            "2003-09-26 00:00:00\n",
            "Total portfolio value: 11519.020899999992  stock 1 number: 2006  stock 2 number: 76  open cash5119.222099999993\n",
            "..........\n",
            "2003-09-29 00:00:00\n",
            "Total portfolio value: 11593.479899999993  stock 1 number: 2005  stock 2 number: 76  open cash5120.5218999999925\n",
            "..........\n",
            "2003-09-30 00:00:00\n",
            "Total portfolio value: 11600.497099999993  stock 1 number: 2004  stock 2 number: 76  open cash5121.897499999993\n",
            "..........\n",
            "2003-10-01 00:00:00\n",
            "Total portfolio value: 11457.148099999993  stock 1 number: 2003  stock 2 number: 76  open cash5123.247399999993\n",
            "..........\n",
            "2003-10-02 00:00:00\n",
            "Total portfolio value: 11510.678299999992  stock 1 number: 2002  stock 2 number: 76  open cash5124.574299999993\n",
            "..........\n",
            "2003-10-03 00:00:00\n",
            "Total portfolio value: 11699.929699999993  stock 1 number: 2001  stock 2 number: 76  open cash5125.906299999993\n",
            "..........\n",
            "2003-10-06 00:00:00\n",
            "Total portfolio value: 11922.689699999992  stock 1 number: 2000  stock 2 number: 76  open cash5127.249699999993\n",
            "..........\n",
            "2003-10-07 00:00:00\n",
            "Total portfolio value: 12055.825299999993  stock 1 number: 1999  stock 2 number: 76  open cash5128.637599999993\n",
            "..........\n",
            "2003-10-08 00:00:00\n",
            "Total portfolio value: 12316.913499999991  stock 1 number: 1998  stock 2 number: 76  open cash5130.049899999993\n",
            "..........\n",
            "2003-10-09 00:00:00\n",
            "Total portfolio value: 12346.658499999992  stock 1 number: 1997  stock 2 number: 76  open cash5131.5380999999925\n",
            "..........\n",
            "2003-10-10 00:00:00\n",
            "Total portfolio value: 12533.972099999992  stock 1 number: 1996  stock 2 number: 76  open cash5133.031299999992\n",
            "..........\n",
            "2003-10-13 00:00:00\n",
            "Total portfolio value: 12570.575599999991  stock 1 number: 1995  stock 2 number: 76  open cash5134.536099999992\n",
            "..........\n",
            "2003-10-14 00:00:00\n",
            "Total portfolio value: 12657.111799999991  stock 1 number: 1994  stock 2 number: 76  open cash5136.056199999992\n",
            "..........\n",
            "2003-10-15 00:00:00\n",
            "Total portfolio value: 12899.710999999992  stock 1 number: 1993  stock 2 number: 76  open cash5137.6135999999915\n",
            "..........\n",
            "2003-10-16 00:00:00\n",
            "Total portfolio value: 12595.173399999992  stock 1 number: 1992  stock 2 number: 76  open cash5139.205399999992\n",
            "..........\n",
            "2003-10-17 00:00:00\n",
            "Total portfolio value: 12627.857299999992  stock 1 number: 1991  stock 2 number: 76  open cash5140.729399999992\n",
            "..........\n",
            "2003-10-20 00:00:00\n",
            "Total portfolio value: 12549.112299999993  stock 1 number: 1990  stock 2 number: 76  open cash5142.226299999992\n",
            "..........\n",
            "2003-10-21 00:00:00\n",
            "Total portfolio value: 12650.542799999992  stock 1 number: 1989  stock 2 number: 76  open cash5143.673699999992\n",
            "..........\n",
            "2003-10-22 00:00:00\n",
            "Total portfolio value: 12356.712799999994  stock 1 number: 1988  stock 2 number: 76  open cash5145.165599999992\n",
            "..........\n",
            "2003-10-23 00:00:00\n",
            "Total portfolio value: 12065.804599999992  stock 1 number: 1987  stock 2 number: 76  open cash5146.649999999992\n",
            "..........\n",
            "2003-10-24 00:00:00\n",
            "Total portfolio value: 12163.278599999992  stock 1 number: 1986  stock 2 number: 76  open cash5148.105799999992\n",
            "..........\n",
            "2003-10-27 00:00:00\n",
            "Total portfolio value: 12184.852599999991  stock 1 number: 1985  stock 2 number: 76  open cash5149.550599999992\n",
            "..........\n",
            "2003-10-28 00:00:00\n",
            "Total portfolio value: 12211.930999999991  stock 1 number: 1984  stock 2 number: 76  open cash5151.007799999992\n",
            "..........\n",
            "2003-10-29 00:00:00\n",
            "Total portfolio value: 12444.250599999992  stock 1 number: 1983  stock 2 number: 76  open cash5152.452599999992\n",
            "..........\n",
            "2003-10-30 00:00:00\n",
            "Total portfolio value: 12559.719599999993  stock 1 number: 1982  stock 2 number: 76  open cash5153.958599999993\n",
            "..........\n",
            "2003-10-31 00:00:00\n",
            "Total portfolio value: 12359.347999999993  stock 1 number: 1981  stock 2 number: 76  open cash5155.494099999993\n",
            "..........\n",
            "2003-11-03 00:00:00\n",
            "Total portfolio value: 12214.763999999992  stock 1 number: 1980  stock 2 number: 76  open cash5156.985999999993\n",
            "..........\n",
            "2003-11-04 00:00:00\n",
            "Total portfolio value: 12392.213299999992  stock 1 number: 1979  stock 2 number: 76  open cash5158.447099999993\n",
            "..........\n",
            "2003-11-05 00:00:00\n",
            "Total portfolio value: 12315.860699999994  stock 1 number: 1978  stock 2 number: 76  open cash5159.924899999993\n",
            "..........\n",
            "2003-11-06 00:00:00\n",
            "Total portfolio value: 12380.786599999994  stock 1 number: 1977  stock 2 number: 76  open cash5161.385999999993\n",
            "..........\n",
            "2003-11-07 00:00:00\n",
            "Total portfolio value: 12324.759399999994  stock 1 number: 1976  stock 2 number: 76  open cash5162.8537999999935\n",
            "..........\n",
            "2003-11-10 00:00:00\n",
            "Total portfolio value: 12101.824399999994  stock 1 number: 1975  stock 2 number: 76  open cash5164.3393999999935\n",
            "..........\n",
            "2003-11-11 00:00:00\n",
            "Total portfolio value: 11874.150999999994  stock 1 number: 1974  stock 2 number: 76  open cash5165.7759999999935\n",
            "..........\n",
            "2003-11-12 00:00:00\n",
            "Total portfolio value: 11876.557299999993  stock 1 number: 1973  stock 2 number: 76  open cash5167.178499999994\n",
            "..........\n",
            "2003-11-13 00:00:00\n",
            "Total portfolio value: 12094.370899999994  stock 1 number: 1972  stock 2 number: 76  open cash5168.554099999994\n",
            "..........\n",
            "2003-11-14 00:00:00\n",
            "Total portfolio value: 12143.326699999994  stock 1 number: 1971  stock 2 number: 76  open cash5169.983499999994\n",
            "..........\n",
            "2003-11-17 00:00:00\n",
            "Total portfolio value: 11811.514699999994  stock 1 number: 1970  stock 2 number: 76  open cash5171.422699999994\n",
            "..........\n",
            "2003-11-18 00:00:00\n",
            "Total portfolio value: 11703.550599999993  stock 1 number: 1969  stock 2 number: 76  open cash5172.790299999993\n",
            "..........\n",
            "2003-11-19 00:00:00\n",
            "Total portfolio value: 11466.784199999995  stock 1 number: 1968  stock 2 number: 76  open cash5174.148999999993\n",
            "..........\n",
            "2003-11-20 00:00:00\n",
            "Total portfolio value: 11438.987799999992  stock 1 number: 1967  stock 2 number: 76  open cash5175.465399999993\n",
            "..........\n",
            "2003-11-21 00:00:00\n",
            "Total portfolio value: 11461.467599999993  stock 1 number: 1966  stock 2 number: 76  open cash5176.7525999999925\n",
            "..........\n",
            "2003-11-24 00:00:00\n",
            "Total portfolio value: 11449.394099999992  stock 1 number: 1965  stock 2 number: 76  open cash5178.055099999992\n",
            "..........\n",
            "2003-11-25 00:00:00\n",
            "Total portfolio value: 11752.811299999994  stock 1 number: 1964  stock 2 number: 76  open cash5179.3676999999925\n",
            "..........\n",
            "2003-11-26 00:00:00\n",
            "Total portfolio value: 11822.497899999993  stock 1 number: 1963  stock 2 number: 76  open cash5180.727599999993\n",
            "..........\n",
            "2003-11-28 00:00:00\n",
            "Total portfolio value: 11801.283499999994  stock 1 number: 1962  stock 2 number: 76  open cash5182.065699999993\n",
            "..........\n",
            "2003-12-01 00:00:00\n",
            "Total portfolio value: 11959.455699999991  stock 1 number: 1961  stock 2 number: 76  open cash5183.392599999993\n",
            "..........\n",
            "2003-12-02 00:00:00\n",
            "Total portfolio value: 12037.223699999993  stock 1 number: 1960  stock 2 number: 76  open cash5184.739699999993\n",
            "..........\n",
            "2003-12-03 00:00:00\n",
            "Total portfolio value: 12000.163099999992  stock 1 number: 1959  stock 2 number: 76  open cash5186.122599999992\n",
            "..........\n",
            "2003-12-04 00:00:00\n",
            "Total portfolio value: 11735.323899999992  stock 1 number: 1958  stock 2 number: 76  open cash5187.502099999992\n",
            "..........\n",
            "2003-12-05 00:00:00\n",
            "Total portfolio value: 11698.710899999993  stock 1 number: 1957  stock 2 number: 76  open cash5188.849199999992\n",
            "..........\n",
            "2003-12-08 00:00:00\n",
            "Total portfolio value: 11710.836499999992  stock 1 number: 1956  stock 2 number: 76  open cash5190.187299999992\n",
            "..........\n",
            "2003-12-09 00:00:00\n",
            "Total portfolio value: 11732.004499999992  stock 1 number: 1955  stock 2 number: 76  open cash5191.517999999993\n",
            "..........\n",
            "2003-12-10 00:00:00\n",
            "Total portfolio value: 11508.664899999992  stock 1 number: 1954  stock 2 number: 76  open cash5192.874299999993\n",
            "..........\n",
            "2003-12-11 00:00:00\n",
            "Total portfolio value: 11468.835899999993  stock 1 number: 1953  stock 2 number: 76  open cash5194.183199999993\n",
            "..........\n",
            "2003-12-12 00:00:00\n",
            "Total portfolio value: 11720.759099999992  stock 1 number: 1952  stock 2 number: 76  open cash5195.479099999993\n",
            "..........\n",
            "2003-12-15 00:00:00\n",
            "Total portfolio value: 11836.439699999992  stock 1 number: 1951  stock 2 number: 76  open cash5196.844099999993\n",
            "..........\n",
            "2003-12-16 00:00:00\n",
            "Total portfolio value: 11489.754699999994  stock 1 number: 1950  stock 2 number: 76  open cash5198.219699999993\n",
            "..........\n",
            "2003-12-17 00:00:00\n",
            "Total portfolio value: 11465.452099999993  stock 1 number: 1949  stock 2 number: 76  open cash5199.512999999994\n",
            "..........\n",
            "2003-12-18 00:00:00\n",
            "Total portfolio value: 11301.495299999995  stock 1 number: 1948  stock 2 number: 76  open cash5200.798899999993\n",
            "..........\n",
            "2003-12-19 00:00:00\n",
            "Total portfolio value: 11428.928299999992  stock 1 number: 1947  stock 2 number: 76  open cash5202.073199999993\n",
            "..........\n",
            "2003-12-22 00:00:00\n",
            "Total portfolio value: 11372.941499999994  stock 1 number: 1946  stock 2 number: 76  open cash5203.366499999994\n",
            "..........\n",
            "2003-12-23 00:00:00\n",
            "Total portfolio value: 11486.796999999995  stock 1 number: 1945  stock 2 number: 76  open cash5204.623999999993\n",
            "..........\n",
            "2003-12-24 00:00:00\n",
            "Total portfolio value: 11635.193799999994  stock 1 number: 1944  stock 2 number: 76  open cash5205.899399999994\n",
            "..........\n",
            "2003-12-26 00:00:00\n",
            "Total portfolio value: 11854.891099999993  stock 1 number: 1943  stock 2 number: 76  open cash5207.161999999994\n",
            "..........\n",
            "2003-12-29 00:00:00\n",
            "Total portfolio value: 11897.620499999994  stock 1 number: 1942  stock 2 number: 76  open cash5208.465699999994\n",
            "..........\n",
            "2003-12-30 00:00:00\n",
            "Total portfolio value: 11884.063399999994  stock 1 number: 1941  stock 2 number: 76  open cash5209.805099999994\n",
            "..........\n",
            "2003-12-31 00:00:00\n",
            "Total portfolio value: 11878.625399999994  stock 1 number: 1940  stock 2 number: 76  open cash5211.1613999999945\n",
            "..........\n",
            "2004-01-02 00:00:00\n",
            "Total portfolio value: 11899.466299999993  stock 1 number: 1939  stock 2 number: 76  open cash5212.528999999994\n",
            "..........\n",
            "2004-01-05 00:00:00\n",
            "Total portfolio value: 11823.116699999995  stock 1 number: 1938  stock 2 number: 76  open cash5213.909699999994\n",
            "..........\n",
            "2004-01-06 00:00:00\n",
            "Total portfolio value: 12010.510299999994  stock 1 number: 1937  stock 2 number: 76  open cash5215.281199999994\n",
            "..........\n",
            "2004-01-07 00:00:00\n",
            "Total portfolio value: 11922.019099999994  stock 1 number: 1936  stock 2 number: 76  open cash5216.705499999994\n",
            "..........\n",
            "2004-01-08 00:00:00\n",
            "Total portfolio value: 12006.704599999994  stock 1 number: 1935  stock 2 number: 76  open cash5218.120599999994\n",
            "..........\n",
            "2004-01-09 00:00:00\n",
            "Total portfolio value: 11880.281799999993  stock 1 number: 1934  stock 2 number: 76  open cash5219.582999999994\n",
            "..........\n",
            "2004-01-12 00:00:00\n",
            "Total portfolio value: 12012.916899999993  stock 1 number: 1933  stock 2 number: 76  open cash5221.071199999994\n",
            "..........\n",
            "2004-01-13 00:00:00\n",
            "Total portfolio value: 12280.932099999995  stock 1 number: 1932  stock 2 number: 76  open cash5222.554099999994\n",
            "..........\n",
            "2004-01-14 00:00:00\n",
            "Total portfolio value: 12392.056899999994  stock 1 number: 1931  stock 2 number: 76  open cash5224.135599999994\n",
            "..........\n",
            "2004-01-15 00:00:00\n",
            "Total portfolio value: 12218.031899999993  stock 1 number: 1930  stock 2 number: 76  open cash5225.697899999994\n",
            "..........\n",
            "2004-01-16 00:00:00\n",
            "Total portfolio value: 12341.676899999995  stock 1 number: 1929  stock 2 number: 76  open cash5227.165699999994\n",
            "..........\n",
            "2004-01-20 00:00:00\n",
            "Total portfolio value: 12251.607299999992  stock 1 number: 1928  stock 2 number: 76  open cash5228.638499999994\n",
            "..........\n",
            "2004-01-21 00:00:00\n",
            "Total portfolio value: 12298.192399999994  stock 1 number: 1927  stock 2 number: 76  open cash5230.090599999994\n",
            "..........\n",
            "2004-01-22 00:00:00\n",
            "Total portfolio value: 12331.788799999995  stock 1 number: 1926  stock 2 number: 76  open cash5231.543999999994\n",
            "..........\n",
            "2004-01-23 00:00:00\n",
            "Total portfolio value: 12314.366299999994  stock 1 number: 1925  stock 2 number: 76  open cash5232.988799999995\n",
            "..........\n",
            "2004-01-26 00:00:00\n",
            "Total portfolio value: 12318.492699999995  stock 1 number: 1924  stock 2 number: 76  open cash5234.413099999994\n",
            "..........\n",
            "2004-01-27 00:00:00\n",
            "Total portfolio value: 12385.468299999993  stock 1 number: 1923  stock 2 number: 76  open cash5235.850999999994\n",
            "..........\n",
            "2004-01-28 00:00:00\n",
            "Total portfolio value: 12132.298899999994  stock 1 number: 1922  stock 2 number: 76  open cash5237.326099999994\n",
            "..........\n",
            "2004-01-29 00:00:00\n",
            "Total portfolio value: 11975.829099999995  stock 1 number: 1921  stock 2 number: 76  open cash5238.788499999994\n",
            "..........\n",
            "2004-01-30 00:00:00\n",
            "Total portfolio value: 11782.173099999993  stock 1 number: 1920  stock 2 number: 76  open cash5240.237099999994\n",
            "..........\n",
            "2004-02-02 00:00:00\n",
            "Total portfolio value: 11843.582999999995  stock 1 number: 1919  stock 2 number: 76  open cash5241.692899999994\n",
            "..........\n",
            "2004-02-03 00:00:00\n",
            "Total portfolio value: 11644.858399999994  stock 1 number: 1918  stock 2 number: 76  open cash5243.1307999999935\n",
            "..........\n",
            "2004-02-04 00:00:00\n",
            "Total portfolio value: 11349.453499999994  stock 1 number: 1917  stock 2 number: 76  open cash5244.558999999994\n",
            "..........\n",
            "2004-02-05 00:00:00\n",
            "Total portfolio value: 11421.474299999994  stock 1 number: 1916  stock 2 number: 76  open cash5245.967499999993\n",
            "..........\n",
            "2004-02-06 00:00:00\n",
            "Total portfolio value: 11509.653799999993  stock 1 number: 1915  stock 2 number: 76  open cash5247.364799999993\n",
            "..........\n",
            "2004-02-09 00:00:00\n",
            "Total portfolio value: 11574.421799999993  stock 1 number: 1914  stock 2 number: 76  open cash5248.801399999993\n",
            "..........\n",
            "2004-02-10 00:00:00\n",
            "Total portfolio value: 11506.021799999993  stock 1 number: 1913  stock 2 number: 76  open cash5250.249999999993\n",
            "..........\n",
            "2004-02-11 00:00:00\n",
            "Total portfolio value: 11562.612199999992  stock 1 number: 1912  stock 2 number: 76  open cash5251.698599999992\n",
            "..........\n",
            "2004-02-12 00:00:00\n",
            "Total portfolio value: 11722.634599999992  stock 1 number: 1911  stock 2 number: 76  open cash5253.176399999992\n",
            "..........\n",
            "2004-02-13 00:00:00\n",
            "Total portfolio value: 11766.448599999992  stock 1 number: 1910  stock 2 number: 76  open cash5254.692599999992\n",
            "..........\n",
            "2004-02-17 00:00:00\n",
            "Total portfolio value: 11586.271199999992  stock 1 number: 1909  stock 2 number: 76  open cash5256.2201999999925\n",
            "..........\n",
            "2004-02-18 00:00:00\n",
            "Total portfolio value: 11537.294399999992  stock 1 number: 1908  stock 2 number: 76  open cash5257.699199999993\n",
            "..........\n",
            "2004-02-19 00:00:00\n",
            "Total portfolio value: 11535.636899999994  stock 1 number: 1907  stock 2 number: 76  open cash5259.183599999993\n",
            "..........\n",
            "2004-02-20 00:00:00\n",
            "Total portfolio value: 11411.259099999992  stock 1 number: 1906  stock 2 number: 76  open cash5260.675499999993\n",
            "..........\n",
            "2004-02-23 00:00:00\n",
            "Total portfolio value: 11433.279099999992  stock 1 number: 1905  stock 2 number: 76  open cash5262.116099999993\n",
            "..........\n",
            "2004-02-24 00:00:00\n",
            "Total portfolio value: 11299.253499999993  stock 1 number: 1904  stock 2 number: 76  open cash5263.552699999993\n",
            "..........\n",
            "2004-02-25 00:00:00\n",
            "Total portfolio value: 11202.749099999994  stock 1 number: 1903  stock 2 number: 76  open cash5264.970399999993\n",
            "..........\n",
            "2004-02-26 00:00:00\n",
            "Total portfolio value: 11315.878099999993  stock 1 number: 1902  stock 2 number: 76  open cash5266.393299999992\n",
            "..........\n",
            "2004-02-27 00:00:00\n",
            "Total portfolio value: 11363.766099999993  stock 1 number: 1901  stock 2 number: 76  open cash5267.855699999993\n",
            "..........\n",
            "2004-03-01 00:00:00\n",
            "Total portfolio value: 11458.006099999993  stock 1 number: 1900  stock 2 number: 76  open cash5269.326099999993\n",
            "..........\n",
            "2004-03-02 00:00:00\n",
            "Total portfolio value: 11432.173699999992  stock 1 number: 1899  stock 2 number: 76  open cash5270.868099999993\n",
            "..........\n",
            "2004-03-03 00:00:00\n",
            "Total portfolio value: 11311.380099999993  stock 1 number: 1898  stock 2 number: 76  open cash5272.402499999993\n",
            "..........\n",
            "2004-03-04 00:00:00\n",
            "Total portfolio value: 11464.830499999993  stock 1 number: 1897  stock 2 number: 76  open cash5273.913699999993\n",
            "..........\n",
            "2004-03-05 00:00:00\n",
            "Total portfolio value: 11626.269699999992  stock 1 number: 1896  stock 2 number: 76  open cash5275.448099999992\n",
            "..........\n",
            "2004-03-08 00:00:00\n",
            "Total portfolio value: 11870.020699999994  stock 1 number: 1895  stock 2 number: 76  open cash5277.045199999992\n",
            "..........\n",
            "2004-03-09 00:00:00\n",
            "Total portfolio value: 11708.670899999992  stock 1 number: 1894  stock 2 number: 76  open cash5278.760099999992\n",
            "..........\n",
            "2004-03-10 00:00:00\n",
            "Total portfolio value: 11797.106499999993  stock 1 number: 1893  stock 2 number: 76  open cash5280.418299999992\n",
            "..........\n",
            "2004-03-11 00:00:00\n",
            "Total portfolio value: 11707.282499999992  stock 1 number: 1892  stock 2 number: 76  open cash5282.145699999992\n",
            "..........\n",
            "2004-03-12 00:00:00\n",
            "Total portfolio value: 11734.039199999992  stock 1 number: 1891  stock 2 number: 76  open cash5283.891099999992\n",
            "..........\n",
            "2004-03-15 00:00:00\n",
            "Total portfolio value: 11769.935199999993  stock 1 number: 1890  stock 2 number: 76  open cash5285.640199999992\n",
            "..........\n",
            "2004-03-16 00:00:00\n",
            "Total portfolio value: 11650.765099999991  stock 1 number: 1889  stock 2 number: 76  open cash5287.3716999999915\n",
            "..........\n",
            "2004-03-17 00:00:00\n",
            "Total portfolio value: 11695.305899999992  stock 1 number: 1888  stock 2 number: 76  open cash5289.072299999992\n",
            "..........\n",
            "2004-03-18 00:00:00\n",
            "Total portfolio value: 11657.132799999992  stock 1 number: 1887  stock 2 number: 76  open cash5290.734499999991\n",
            "..........\n",
            "2004-03-19 00:00:00\n",
            "Total portfolio value: 11670.265599999992  stock 1 number: 1886  stock 2 number: 76  open cash5292.395399999991\n",
            "..........\n",
            "2004-03-22 00:00:00\n",
            "Total portfolio value: 11530.354599999991  stock 1 number: 1885  stock 2 number: 76  open cash5294.041099999991\n",
            "..........\n",
            "2004-03-23 00:00:00\n",
            "Total portfolio value: 11554.31259999999  stock 1 number: 1884  stock 2 number: 76  open cash5295.6661999999915\n",
            "..........\n",
            "2004-03-24 00:00:00\n",
            "Total portfolio value: 11414.197499999991  stock 1 number: 1883  stock 2 number: 76  open cash5297.325799999991\n",
            "..........\n",
            "2004-03-25 00:00:00\n",
            "Total portfolio value: 11484.332299999991  stock 1 number: 1882  stock 2 number: 76  open cash5298.945699999991\n",
            "..........\n",
            "2004-03-26 00:00:00\n",
            "Total portfolio value: 11735.468599999991  stock 1 number: 1881  stock 2 number: 76  open cash5300.616999999991\n",
            "..........\n",
            "2004-03-29 00:00:00\n",
            "Total portfolio value: 11797.932599999993  stock 1 number: 1880  stock 2 number: 76  open cash5302.340599999991\n",
            "..........\n",
            "2004-03-30 00:00:00\n",
            "Total portfolio value: 11902.190999999992  stock 1 number: 1879  stock 2 number: 76  open cash5304.094999999991\n",
            "..........\n",
            "2004-03-31 00:00:00\n",
            "Total portfolio value: 11988.830999999991  stock 1 number: 1878  stock 2 number: 76  open cash5305.878999999991\n",
            "..........\n",
            "2004-04-01 00:00:00\n",
            "Total portfolio value: 11841.86009999999  stock 1 number: 1877  stock 2 number: 76  open cash5307.6629999999905\n",
            "..........\n",
            "2004-04-02 00:00:00\n",
            "Total portfolio value: 12127.46889999999  stock 1 number: 1876  stock 2 number: 76  open cash5309.385299999991\n",
            "..........\n",
            "2004-04-05 00:00:00\n",
            "Total portfolio value: 12081.331399999992  stock 1 number: 1875  stock 2 number: 76  open cash5311.161399999991\n",
            "..........\n",
            "2004-04-06 00:00:00\n",
            "Total portfolio value: 12160.892399999992  stock 1 number: 1874  stock 2 number: 76  open cash5312.920999999991\n",
            "..........\n",
            "2004-04-07 00:00:00\n",
            "Total portfolio value: 12138.110299999993  stock 1 number: 1873  stock 2 number: 76  open cash5314.697099999991\n",
            "..........\n",
            "2004-04-08 00:00:00\n",
            "Total portfolio value: 12297.195099999992  stock 1 number: 1872  stock 2 number: 76  open cash5316.465499999991\n",
            "..........\n",
            "2004-04-12 00:00:00\n",
            "Total portfolio value: 12265.070399999991  stock 1 number: 1871  stock 2 number: 76  open cash5318.252299999991\n",
            "..........\n",
            "2004-04-13 00:00:00\n",
            "Total portfolio value: 12320.36239999999  stock 1 number: 1870  stock 2 number: 76  open cash5320.013399999991\n",
            "..........\n",
            "2004-04-14 00:00:00\n",
            "Total portfolio value: 12016.76169999999  stock 1 number: 1869  stock 2 number: 76  open cash5321.806099999991\n",
            "..........\n",
            "2004-04-15 00:00:00\n",
            "Total portfolio value: 12359.83449999999  stock 1 number: 1868  stock 2 number: 76  open cash5323.518499999991\n",
            "..........\n",
            "2004-04-16 00:00:00\n",
            "Total portfolio value: 12379.236199999992  stock 1 number: 1867  stock 2 number: 76  open cash5325.375499999991\n",
            "..........\n",
            "2004-04-19 00:00:00\n",
            "Total portfolio value: 12134.330599999992  stock 1 number: 1866  stock 2 number: 76  open cash5327.237599999991\n",
            "..........\n",
            "2004-04-20 00:00:00\n",
            "Total portfolio value: 12318.586099999991  stock 1 number: 1865  stock 2 number: 76  open cash5329.038099999992\n",
            "..........\n",
            "2004-04-21 00:00:00\n",
            "Total portfolio value: 12064.092499999992  stock 1 number: 1864  stock 2 number: 76  open cash5330.845299999992\n",
            "..........\n",
            "2004-04-22 00:00:00\n",
            "Total portfolio value: 12112.821299999992  stock 1 number: 1863  stock 2 number: 76  open cash5332.612599999992\n",
            "..........\n",
            "2004-04-23 00:00:00\n",
            "Total portfolio value: 12134.903099999992  stock 1 number: 1862  stock 2 number: 76  open cash5334.377499999992\n",
            "..........\n",
            "2004-04-26 00:00:00\n",
            "Total portfolio value: 12137.868399999992  stock 1 number: 1861  stock 2 number: 76  open cash5336.156299999992\n",
            "..........\n",
            "2004-04-27 00:00:00\n",
            "Total portfolio value: 12201.828399999991  stock 1 number: 1860  stock 2 number: 76  open cash5337.922399999992\n",
            "..........\n",
            "2004-04-28 00:00:00\n",
            "Total portfolio value: 12151.247199999993  stock 1 number: 1859  stock 2 number: 76  open cash5339.666499999992\n",
            "..........\n",
            "2004-04-29 00:00:00\n",
            "Total portfolio value: 12053.657799999992  stock 1 number: 1858  stock 2 number: 76  open cash5341.383799999992\n",
            "..........\n",
            "2004-04-30 00:00:00\n",
            "Total portfolio value: 12041.947899999992  stock 1 number: 1857  stock 2 number: 76  open cash5343.0767999999925\n",
            "..........\n",
            "2004-05-03 00:00:00\n",
            "Total portfolio value: 11736.867899999994  stock 1 number: 1856  stock 2 number: 76  open cash5344.799099999993\n",
            "..........\n",
            "2004-05-04 00:00:00\n",
            "Total portfolio value: 11817.062399999992  stock 1 number: 1855  stock 2 number: 76  open cash5346.4638999999925\n",
            "..........\n",
            "2004-05-05 00:00:00\n",
            "Total portfolio value: 11799.752199999992  stock 1 number: 1854  stock 2 number: 76  open cash5348.132599999993\n",
            "..........\n",
            "2004-05-06 00:00:00\n",
            "Total portfolio value: 11795.090099999992  stock 1 number: 1853  stock 2 number: 76  open cash5349.809999999992\n",
            "..........\n",
            "2004-05-07 00:00:00\n",
            "Total portfolio value: 11768.565699999992  stock 1 number: 1852  stock 2 number: 76  open cash5351.5016999999925\n",
            "..........\n",
            "2004-05-10 00:00:00\n",
            "Total portfolio value: 11600.660199999993  stock 1 number: 1851  stock 2 number: 76  open cash5353.203699999993\n",
            "..........\n",
            "2004-05-11 00:00:00\n",
            "Total portfolio value: 11667.285199999991  stock 1 number: 1850  stock 2 number: 76  open cash5354.885199999992\n",
            "..........\n",
            "2004-05-12 00:00:00\n",
            "Total portfolio value: 11717.905699999992  stock 1 number: 1849  stock 2 number: 76  open cash5356.575599999993\n",
            "..........\n",
            "2004-05-13 00:00:00\n",
            "Total portfolio value: 11796.007299999992  stock 1 number: 1848  stock 2 number: 76  open cash5358.290499999993\n",
            "..........\n",
            "2004-05-14 00:00:00\n",
            "Total portfolio value: 11882.895599999993  stock 1 number: 1847  stock 2 number: 76  open cash5360.027099999993\n",
            "..........\n",
            "2004-05-17 00:00:00\n",
            "Total portfolio value: 11728.108799999993  stock 1 number: 1846  stock 2 number: 76  open cash5361.762599999993\n",
            "..........\n",
            "2004-05-18 00:00:00\n",
            "Total portfolio value: 11758.366799999993  stock 1 number: 1845  stock 2 number: 76  open cash5363.472299999993\n",
            "..........\n",
            "2004-05-19 00:00:00\n",
            "Total portfolio value: 11821.191999999992  stock 1 number: 1844  stock 2 number: 76  open cash5365.198399999993\n",
            "..........\n",
            "2004-05-20 00:00:00\n",
            "Total portfolio value: 11673.561999999993  stock 1 number: 1843  stock 2 number: 76  open cash5366.952799999993\n",
            "..........\n",
            "2004-05-21 00:00:00\n",
            "Total portfolio value: 11670.813799999993  stock 1 number: 1842  stock 2 number: 76  open cash5368.657199999992\n",
            "..........\n",
            "2004-05-24 00:00:00\n",
            "Total portfolio value: 11715.507599999994  stock 1 number: 1841  stock 2 number: 76  open cash5370.379499999993\n",
            "..........\n",
            "2004-05-25 00:00:00\n",
            "Total portfolio value: 11785.547599999993  stock 1 number: 1840  stock 2 number: 76  open cash5372.123599999993\n",
            "..........\n",
            "2004-05-26 00:00:00\n",
            "Total portfolio value: 12026.59269999999  stock 1 number: 1839  stock 2 number: 76  open cash5373.884699999992\n",
            "..........\n",
            "2004-05-27 00:00:00\n",
            "Total portfolio value: 12167.049699999992  stock 1 number: 1838  stock 2 number: 76  open cash5375.696699999992\n",
            "..........\n",
            "2004-05-28 00:00:00\n",
            "Total portfolio value: 12272.782499999994  stock 1 number: 1837  stock 2 number: 76  open cash5377.520199999993\n",
            "..........\n",
            "2004-06-01 00:00:00\n",
            "Total portfolio value: 12284.074899999992  stock 1 number: 1836  stock 2 number: 76  open cash5379.318099999992\n",
            "..........\n",
            "2004-06-02 00:00:00\n",
            "Total portfolio value: 12509.305399999994  stock 1 number: 1835  stock 2 number: 76  open cash5381.096899999992\n",
            "..........\n",
            "2004-06-03 00:00:00\n",
            "Total portfolio value: 12550.297999999992  stock 1 number: 1834  stock 2 number: 76  open cash5382.891999999993\n",
            "..........\n",
            "2004-06-04 00:00:00\n",
            "Total portfolio value: 12552.881399999993  stock 1 number: 1833  stock 2 number: 76  open cash5384.7309999999925\n",
            "..........\n",
            "2004-06-07 00:00:00\n",
            "Total portfolio value: 12721.603799999993  stock 1 number: 1832  stock 2 number: 76  open cash5386.559799999993\n",
            "..........\n",
            "2004-06-08 00:00:00\n",
            "Total portfolio value: 12802.465999999993  stock 1 number: 1831  stock 2 number: 76  open cash5388.419299999992\n",
            "..........\n",
            "2004-06-09 00:00:00\n",
            "Total portfolio value: 12836.880999999992  stock 1 number: 1830  stock 2 number: 76  open cash5390.334999999992\n",
            "..........\n",
            "2004-06-10 00:00:00\n",
            "Total portfolio value: 12756.175599999991  stock 1 number: 1829  stock 2 number: 76  open cash5392.261199999992\n",
            "..........\n",
            "2004-06-14 00:00:00\n",
            "Total portfolio value: 12738.565199999992  stock 1 number: 1828  stock 2 number: 76  open cash5394.194799999992\n",
            "..........\n",
            "2004-06-15 00:00:00\n",
            "Total portfolio value: 12716.391799999992  stock 1 number: 1827  stock 2 number: 76  open cash5396.156599999992\n",
            "..........\n",
            "2004-06-16 00:00:00\n",
            "Total portfolio value: 12786.509799999993  stock 1 number: 1826  stock 2 number: 76  open cash5398.094199999992\n",
            "..........\n",
            "2004-06-17 00:00:00\n",
            "Total portfolio value: 13063.224799999993  stock 1 number: 1825  stock 2 number: 76  open cash5400.054799999993\n",
            "..........\n",
            "2004-06-18 00:00:00\n",
            "Total portfolio value: 12984.397599999993  stock 1 number: 1824  stock 2 number: 76  open cash5402.151199999993\n",
            "..........\n",
            "2004-06-21 00:00:00\n",
            "Total portfolio value: 13039.295699999993  stock 1 number: 1823  stock 2 number: 76  open cash5404.237299999993\n",
            "..........\n",
            "2004-06-22 00:00:00\n",
            "Total portfolio value: 12948.867099999992  stock 1 number: 1822  stock 2 number: 76  open cash5406.358099999993\n",
            "..........\n",
            "2004-06-23 00:00:00\n",
            "Total portfolio value: 12963.480599999992  stock 1 number: 1821  stock 2 number: 76  open cash5408.427599999993\n",
            "..........\n",
            "2004-06-24 00:00:00\n",
            "Total portfolio value: 13211.188599999994  stock 1 number: 1820  stock 2 number: 76  open cash5410.540599999993\n",
            "..........\n",
            "2004-06-25 00:00:00\n",
            "Total portfolio value: 13133.763999999994  stock 1 number: 1819  stock 2 number: 76  open cash5412.696999999993\n",
            "..........\n",
            "2004-06-28 00:00:00\n",
            "Total portfolio value: 13328.524399999993  stock 1 number: 1818  stock 2 number: 76  open cash5414.809999999993\n",
            "..........\n",
            "2004-06-29 00:00:00\n",
            "Total portfolio value: 13198.824299999993  stock 1 number: 1817  stock 2 number: 76  open cash5416.980799999993\n",
            "..........\n",
            "2004-06-30 00:00:00\n",
            "Total portfolio value: 13279.332299999995  stock 1 number: 1816  stock 2 number: 76  open cash5419.036299999993\n",
            "..........\n",
            "2004-07-01 00:00:00\n",
            "Total portfolio value: 13236.770299999993  stock 1 number: 1815  stock 2 number: 76  open cash5421.1172999999935\n",
            "..........\n",
            "2004-07-02 00:00:00\n",
            "Total portfolio value: 12956.620299999993  stock 1 number: 1814  stock 2 number: 76  open cash5423.171499999993\n",
            "..........\n",
            "2004-07-06 00:00:00\n",
            "Total portfolio value: 13017.928899999994  stock 1 number: 1813  stock 2 number: 76  open cash5425.120699999993\n",
            "..........\n",
            "2004-07-07 00:00:00\n",
            "Total portfolio value: 12860.778499999993  stock 1 number: 1812  stock 2 number: 76  open cash5427.112099999993\n",
            "..........\n",
            "2004-07-08 00:00:00\n",
            "Total portfolio value: 12610.818899999993  stock 1 number: 1811  stock 2 number: 76  open cash5429.084299999993\n",
            "..........\n",
            "2004-07-09 00:00:00\n",
            "Total portfolio value: 12724.388899999994  stock 1 number: 1810  stock 2 number: 76  open cash5431.012899999993\n",
            "..........\n",
            "2004-07-12 00:00:00\n",
            "Total portfolio value: 12569.972099999994  stock 1 number: 1809  stock 2 number: 76  open cash5432.950499999994\n",
            "..........\n",
            "2004-07-13 00:00:00\n",
            "Total portfolio value: 12555.210499999994  stock 1 number: 1808  stock 2 number: 76  open cash5434.872899999994\n",
            "..........\n",
            "2004-07-14 00:00:00\n",
            "Total portfolio value: 12515.844499999996  stock 1 number: 1807  stock 2 number: 76  open cash5436.745099999994\n",
            "..........\n",
            "2004-07-15 00:00:00\n",
            "Total portfolio value: 12968.900899999993  stock 1 number: 1806  stock 2 number: 76  open cash5438.5992999999935\n",
            "..........\n",
            "2004-07-16 00:00:00\n",
            "Total portfolio value: 12968.501899999994  stock 1 number: 1805  stock 2 number: 76  open cash5440.682899999993\n",
            "..........\n",
            "2004-07-19 00:00:00\n",
            "Total portfolio value: 12735.456699999992  stock 1 number: 1804  stock 2 number: 76  open cash5442.790699999993\n",
            "..........\n",
            "2004-07-20 00:00:00\n",
            "Total portfolio value: 12636.273299999993  stock 1 number: 1803  stock 2 number: 76  open cash5444.842199999993\n",
            "..........\n",
            "2004-07-21 00:00:00\n",
            "Total portfolio value: 12770.102299999993  stock 1 number: 1802  stock 2 number: 76  open cash5446.885899999993\n",
            "..........\n",
            "2004-07-22 00:00:00\n",
            "Total portfolio value: 12384.400899999993  stock 1 number: 1801  stock 2 number: 76  open cash5448.954099999993\n",
            "..........\n",
            "2004-07-23 00:00:00\n",
            "Total portfolio value: 12332.140899999993  stock 1 number: 1800  stock 2 number: 76  open cash5450.960899999993\n",
            "..........\n",
            "2004-07-26 00:00:00\n",
            "Total portfolio value: 12047.994499999993  stock 1 number: 1799  stock 2 number: 76  open cash5452.990599999993\n",
            "..........\n",
            "2004-07-27 00:00:00\n",
            "Total portfolio value: 12089.239299999994  stock 1 number: 1798  stock 2 number: 76  open cash5454.966699999993\n",
            "..........\n",
            "2004-07-28 00:00:00\n",
            "Total portfolio value: 12155.851899999994  stock 1 number: 1797  stock 2 number: 76  open cash5457.000399999993\n",
            "..........\n",
            "2004-07-29 00:00:00\n",
            "Total portfolio value: 12106.585899999991  stock 1 number: 1796  stock 2 number: 76  open cash5459.069899999992\n",
            "..........\n",
            "2004-07-30 00:00:00\n",
            "Total portfolio value: 12143.188399999992  stock 1 number: 1795  stock 2 number: 76  open cash5461.150899999992\n",
            "..........\n",
            "2004-08-02 00:00:00\n",
            "Total portfolio value: 11973.221599999992  stock 1 number: 1794  stock 2 number: 76  open cash5463.243399999992\n",
            "..........\n",
            "2004-08-03 00:00:00\n",
            "Total portfolio value: 11991.183999999992  stock 1 number: 1793  stock 2 number: 76  open cash5465.243699999992\n",
            "..........\n",
            "2004-08-04 00:00:00\n",
            "Total portfolio value: 11848.499199999991  stock 1 number: 1792  stock 2 number: 76  open cash5467.260799999992\n",
            "..........\n",
            "2004-08-05 00:00:00\n",
            "Total portfolio value: 11960.095199999992  stock 1 number: 1791  stock 2 number: 76  open cash5469.258499999992\n",
            "..........\n",
            "2004-08-06 00:00:00\n",
            "Total portfolio value: 11692.165199999992  stock 1 number: 1790  stock 2 number: 76  open cash5471.292199999992\n",
            "..........\n",
            "2004-08-09 00:00:00\n",
            "Total portfolio value: 11579.32109999999  stock 1 number: 1789  stock 2 number: 76  open cash5473.270899999991\n",
            "..........\n",
            "2004-08-10 00:00:00\n",
            "Total portfolio value: 11667.204699999991  stock 1 number: 1788  stock 2 number: 76  open cash5475.182699999991\n",
            "..........\n",
            "2004-08-11 00:00:00\n",
            "Total portfolio value: 11802.160999999993  stock 1 number: 1787  stock 2 number: 76  open cash5477.129199999991\n",
            "..........\n",
            "2004-08-12 00:00:00\n",
            "Total portfolio value: 11725.925399999991  stock 1 number: 1786  stock 2 number: 76  open cash5479.120599999991\n",
            "..........\n",
            "2004-08-13 00:00:00\n",
            "Total portfolio value: 11763.770899999992  stock 1 number: 1785  stock 2 number: 76  open cash5481.077399999991\n",
            "..........\n",
            "2004-08-16 00:00:00\n",
            "Total portfolio value: 11757.18369999999  stock 1 number: 1784  stock 2 number: 76  open cash5483.040499999991\n",
            "..........\n",
            "2004-08-17 00:00:00\n",
            "Total portfolio value: 11904.04629999999  stock 1 number: 1783  stock 2 number: 76  open cash5485.0177999999905\n",
            "..........\n",
            "2004-08-18 00:00:00\n",
            "Total portfolio value: 11851.28169999999  stock 1 number: 1782  stock 2 number: 76  open cash5486.9772999999905\n",
            "..........\n",
            "2004-08-19 00:00:00\n",
            "Total portfolio value: 12149.18569999999  stock 1 number: 1781  stock 2 number: 76  open cash5488.931499999991\n",
            "..........\n",
            "2004-08-20 00:00:00\n",
            "Total portfolio value: 11919.03769999999  stock 1 number: 1780  stock 2 number: 76  open cash5490.949699999991\n",
            "..........\n",
            "2004-08-23 00:00:00\n",
            "Total portfolio value: 12033.103099999991  stock 1 number: 1779  stock 2 number: 76  open cash5492.919299999991\n",
            "..........\n",
            "2004-08-24 00:00:00\n",
            "Total portfolio value: 12074.736299999991  stock 1 number: 1778  stock 2 number: 76  open cash5494.8914999999915\n",
            "..........\n",
            "2004-08-25 00:00:00\n",
            "Total portfolio value: 12093.30799999999  stock 1 number: 1777  stock 2 number: 76  open cash5496.893099999991\n",
            "..........\n",
            "2004-08-26 00:00:00\n",
            "Total portfolio value: 12323.775199999993  stock 1 number: 1776  stock 2 number: 76  open cash5498.936799999991\n",
            "..........\n",
            "2004-08-27 00:00:00\n",
            "Total portfolio value: 12496.955199999993  stock 1 number: 1775  stock 2 number: 76  open cash5501.060199999992\n",
            "..........\n",
            "2004-08-30 00:00:00\n",
            "Total portfolio value: 12396.002399999992  stock 1 number: 1774  stock 2 number: 76  open cash5503.275599999992\n",
            "..........\n",
            "2004-08-31 00:00:00\n",
            "Total portfolio value: 12299.557099999993  stock 1 number: 1773  stock 2 number: 76  open cash5505.453799999992\n",
            "..........\n",
            "2004-09-01 00:00:00\n",
            "Total portfolio value: 12304.605099999992  stock 1 number: 1772  stock 2 number: 76  open cash5507.635899999992\n",
            "..........\n",
            "2004-09-02 00:00:00\n",
            "Total portfolio value: 12425.772099999991  stock 1 number: 1771  stock 2 number: 76  open cash5509.831999999992\n",
            "..........\n",
            "2004-09-03 00:00:00\n",
            "Total portfolio value: 12448.03709999999  stock 1 number: 1770  stock 2 number: 76  open cash5512.1050999999925\n",
            "..........\n",
            "2004-09-07 00:00:00\n",
            "Total portfolio value: 12490.774799999992  stock 1 number: 1769  stock 2 number: 76  open cash5514.348699999992\n",
            "..........\n",
            "2004-09-08 00:00:00\n",
            "Total portfolio value: 12478.183599999993  stock 1 number: 1768  stock 2 number: 76  open cash5516.615599999992\n",
            "..........\n",
            "2004-09-09 00:00:00\n",
            "Total portfolio value: 12508.802099999992  stock 1 number: 1767  stock 2 number: 76  open cash5518.901599999992\n",
            "..........\n",
            "2004-09-10 00:00:00\n",
            "Total portfolio value: 12459.016699999993  stock 1 number: 1766  stock 2 number: 76  open cash5521.213099999992\n",
            "..........\n",
            "2004-09-13 00:00:00\n",
            "Total portfolio value: 12549.994199999992  stock 1 number: 1765  stock 2 number: 76  open cash5523.497699999992\n",
            "..........\n",
            "2004-09-14 00:00:00\n",
            "Total portfolio value: 12568.922999999992  stock 1 number: 1764  stock 2 number: 76  open cash5525.793799999991\n",
            "..........\n",
            "2004-09-15 00:00:00\n",
            "Total portfolio value: 12727.529399999992  stock 1 number: 1763  stock 2 number: 76  open cash5528.054099999991\n",
            "..........\n",
            "2004-09-16 00:00:00\n",
            "Total portfolio value: 12727.54659999999  stock 1 number: 1762  stock 2 number: 76  open cash5530.3271999999915\n",
            "..........\n",
            "2004-09-17 00:00:00\n",
            "Total portfolio value: 12909.744799999991  stock 1 number: 1761  stock 2 number: 76  open cash5532.580899999992\n",
            "..........\n",
            "2004-09-20 00:00:00\n",
            "Total portfolio value: 12949.288799999991  stock 1 number: 1760  stock 2 number: 76  open cash5534.920799999992\n",
            "..........\n",
            "2004-09-21 00:00:00\n",
            "Total portfolio value: 13089.509599999992  stock 1 number: 1759  stock 2 number: 76  open cash5537.283599999992\n",
            "..........\n",
            "2004-09-22 00:00:00\n",
            "Total portfolio value: 13107.73859999999  stock 1 number: 1758  stock 2 number: 76  open cash5539.697599999991\n",
            "..........\n",
            "2004-09-23 00:00:00\n",
            "Total portfolio value: 12850.645399999992  stock 1 number: 1757  stock 2 number: 76  open cash5542.137099999992\n",
            "..........\n",
            "2004-09-24 00:00:00\n",
            "Total portfolio value: 12927.513399999993  stock 1 number: 1756  stock 2 number: 76  open cash5544.508999999992\n",
            "..........\n",
            "2004-09-27 00:00:00\n",
            "Total portfolio value: 12794.246899999991  stock 1 number: 1755  stock 2 number: 76  open cash5546.903899999992\n",
            "..........\n",
            "2004-09-28 00:00:00\n",
            "Total portfolio value: 12821.495299999991  stock 1 number: 1754  stock 2 number: 76  open cash5549.270499999992\n",
            "..........\n",
            "2004-09-29 00:00:00\n",
            "Total portfolio value: 12806.155699999992  stock 1 number: 1753  stock 2 number: 76  open cash5551.671699999993\n",
            "..........\n",
            "2004-09-30 00:00:00\n",
            "Total portfolio value: 13010.994099999993  stock 1 number: 1752  stock 2 number: 76  open cash5554.0996999999925\n",
            "..........\n",
            "2004-10-01 00:00:00\n",
            "Total portfolio value: 13076.916799999992  stock 1 number: 1751  stock 2 number: 76  open cash5556.596899999992\n",
            "..........\n",
            "2004-10-04 00:00:00\n",
            "Total portfolio value: 13088.12679999999  stock 1 number: 1750  stock 2 number: 76  open cash5559.101799999992\n",
            "..........\n",
            "2004-10-05 00:00:00\n",
            "Total portfolio value: 12983.731499999993  stock 1 number: 1749  stock 2 number: 76  open cash5561.6104999999925\n",
            "..........\n",
            "2004-10-06 00:00:00\n",
            "Total portfolio value: 13080.950699999992  stock 1 number: 1748  stock 2 number: 76  open cash5564.079499999993\n",
            "..........\n",
            "2004-10-07 00:00:00\n",
            "Total portfolio value: 13250.326199999992  stock 1 number: 1747  stock 2 number: 76  open cash5566.608899999993\n",
            "..........\n",
            "2004-10-08 00:00:00\n",
            "Total portfolio value: 13100.818399999993  stock 1 number: 1746  stock 2 number: 76  open cash5569.204799999993\n",
            "..........\n",
            "2004-10-11 00:00:00\n",
            "Total portfolio value: 12933.508899999993  stock 1 number: 1745  stock 2 number: 76  open cash5571.736399999993\n",
            "..........\n",
            "2004-10-12 00:00:00\n",
            "Total portfolio value: 12879.155299999993  stock 1 number: 1744  stock 2 number: 76  open cash5574.220899999993\n",
            "..........\n",
            "2004-10-13 00:00:00\n",
            "Total portfolio value: 13057.941099999993  stock 1 number: 1743  stock 2 number: 76  open cash5576.685999999993\n",
            "..........\n",
            "2004-10-14 00:00:00\n",
            "Total portfolio value: 13378.149499999994  stock 1 number: 1742  stock 2 number: 76  open cash5579.1716999999935\n",
            "..........\n",
            "2004-10-15 00:00:00\n",
            "Total portfolio value: 13571.491099999994  stock 1 number: 1741  stock 2 number: 76  open cash5581.927599999994\n",
            "..........\n",
            "2004-10-18 00:00:00\n",
            "Total portfolio value: 13483.183099999995  stock 1 number: 1740  stock 2 number: 76  open cash5584.801099999993\n",
            "..........\n",
            "2004-10-19 00:00:00\n",
            "Total portfolio value: 13963.854499999994  stock 1 number: 1739  stock 2 number: 76  open cash5587.668399999993\n",
            "..........\n",
            "2004-10-20 00:00:00\n",
            "Total portfolio value: 13728.916299999993  stock 1 number: 1738  stock 2 number: 76  open cash5590.748299999993\n",
            "..........\n",
            "2004-10-21 00:00:00\n",
            "Total portfolio value: 13887.295399999992  stock 1 number: 1737  stock 2 number: 76  open cash5593.7642999999925\n",
            "..........\n",
            "2004-10-22 00:00:00\n",
            "Total portfolio value: 13618.294599999992  stock 1 number: 1736  stock 2 number: 76  open cash5596.814599999992\n",
            "..........\n",
            "2004-10-25 00:00:00\n",
            "Total portfolio value: 13434.206599999994  stock 1 number: 1735  stock 2 number: 76  open cash5599.849599999992\n",
            "..........\n",
            "2004-10-26 00:00:00\n",
            "Total portfolio value: 13467.897799999992  stock 1 number: 1734  stock 2 number: 76  open cash5602.871799999993\n",
            "..........\n",
            "2004-10-27 00:00:00\n",
            "Total portfolio value: 13561.125599999992  stock 1 number: 1733  stock 2 number: 76  open cash5605.910799999992\n",
            "..........\n",
            "2004-10-28 00:00:00\n",
            "Total portfolio value: 13754.359199999992  stock 1 number: 1732  stock 2 number: 76  open cash5609.0263999999925\n",
            "..........\n",
            "2004-10-29 00:00:00\n",
            "Total portfolio value: 13969.295099999992  stock 1 number: 1731  stock 2 number: 76  open cash5612.226799999992\n",
            "..........\n",
            "2004-11-01 00:00:00\n",
            "Total portfolio value: 14032.940099999993  stock 1 number: 1730  stock 2 number: 76  open cash5615.546099999992\n",
            "..........\n",
            "2004-11-02 00:00:00\n",
            "Total portfolio value: 14117.429299999993  stock 1 number: 1729  stock 2 number: 76  open cash5618.907899999992\n",
            "..........\n",
            "2004-11-03 00:00:00\n",
            "Total portfolio value: 14473.859699999992  stock 1 number: 1728  stock 2 number: 76  open cash5622.264499999992\n",
            "..........\n",
            "2004-11-04 00:00:00\n",
            "Total portfolio value: 14426.763799999992  stock 1 number: 1727  stock 2 number: 76  open cash5625.750399999992\n",
            "..........\n",
            "2004-11-05 00:00:00\n",
            "Total portfolio value: 14536.042399999991  stock 1 number: 1726  stock 2 number: 76  open cash5629.274599999992\n",
            "..........\n",
            "2004-11-08 00:00:00\n",
            "Total portfolio value: 14421.544899999994  stock 1 number: 1725  stock 2 number: 76  open cash5632.789899999992\n",
            "..........\n",
            "2004-11-09 00:00:00\n",
            "Total portfolio value: 14427.435299999994  stock 1 number: 1724  stock 2 number: 76  open cash5636.265699999992\n",
            "..........\n",
            "2004-11-10 00:00:00\n",
            "Total portfolio value: 14482.565699999992  stock 1 number: 1723  stock 2 number: 76  open cash5639.736099999992\n",
            "..........\n",
            "2004-11-11 00:00:00\n",
            "Total portfolio value: 14598.09369999999  stock 1 number: 1722  stock 2 number: 76  open cash5643.191299999992\n",
            "..........\n",
            "2004-11-12 00:00:00\n",
            "Total portfolio value: 14675.52829999999  stock 1 number: 1721  stock 2 number: 76  open cash5646.710499999992\n",
            "..........\n",
            "2004-11-15 00:00:00\n",
            "Total portfolio value: 14781.996299999992  stock 1 number: 1720  stock 2 number: 76  open cash5650.232299999992\n",
            "..........\n",
            "2004-11-16 00:00:00\n",
            "Total portfolio value: 14803.266999999993  stock 1 number: 1719  stock 2 number: 76  open cash5653.758999999993\n",
            "..........\n",
            "2004-11-17 00:00:00\n",
            "Total portfolio value: 14797.900399999991  stock 1 number: 1718  stock 2 number: 76  open cash5657.290999999993\n",
            "..........\n",
            "2004-11-18 00:00:00\n",
            "Total portfolio value: 14650.141599999992  stock 1 number: 1717  stock 2 number: 76  open cash5660.824299999993\n",
            "..........\n",
            "2004-11-19 00:00:00\n",
            "Total portfolio value: 14737.507199999993  stock 1 number: 1716  stock 2 number: 76  open cash5664.301199999993\n",
            "..........\n",
            "2004-11-22 00:00:00\n",
            "Total portfolio value: 14955.371199999992  stock 1 number: 1715  stock 2 number: 76  open cash5667.854699999993\n",
            "..........\n",
            "2004-11-23 00:00:00\n",
            "Total portfolio value: 15408.338999999993  stock 1 number: 1714  stock 2 number: 76  open cash5671.569799999993\n",
            "..........\n",
            "2004-11-24 00:00:00\n",
            "Total portfolio value: 15394.999799999992  stock 1 number: 1713  stock 2 number: 76  open cash5675.557599999993\n",
            "..........\n",
            "2004-11-26 00:00:00\n",
            "Total portfolio value: 15802.201399999994  stock 1 number: 1712  stock 2 number: 76  open cash5679.506999999993\n",
            "..........\n",
            "2004-11-29 00:00:00\n",
            "Total portfolio value: 16251.653099999992  stock 1 number: 1711  stock 2 number: 76  open cash5683.690699999993\n",
            "..........\n",
            "2004-11-30 00:00:00\n",
            "Total portfolio value: 16182.892099999994  stock 1 number: 1710  stock 2 number: 76  open cash5688.109099999992\n",
            "..........\n",
            "2004-12-01 00:00:00\n",
            "Total portfolio value: 16068.567799999993  stock 1 number: 1709  stock 2 number: 76  open cash5692.514399999993\n",
            "..........\n",
            "2004-12-02 00:00:00\n",
            "Total portfolio value: 15940.948199999992  stock 1 number: 1708  stock 2 number: 76  open cash5696.8069999999925\n",
            "..........\n",
            "2004-12-03 00:00:00\n",
            "Total portfolio value: 15824.797499999993  stock 1 number: 1707  stock 2 number: 76  open cash5701.040899999993\n",
            "..........\n",
            "2004-12-06 00:00:00\n",
            "Total portfolio value: 15742.115099999992  stock 1 number: 1706  stock 2 number: 76  open cash5705.174699999992\n",
            "..........\n",
            "2004-12-07 00:00:00\n",
            "Total portfolio value: 15906.339099999992  stock 1 number: 1705  stock 2 number: 76  open cash5709.2880999999925\n",
            "..........\n",
            "2004-12-08 00:00:00\n",
            "Total portfolio value: 15508.456699999993  stock 1 number: 1704  stock 2 number: 76  open cash5713.510299999993\n",
            "..........\n",
            "2004-12-09 00:00:00\n",
            "Total portfolio value: 15479.625199999993  stock 1 number: 1703  stock 2 number: 76  open cash5717.549399999993\n",
            "..........\n",
            "2004-12-10 00:00:00\n",
            "Total portfolio value: 15826.15719999999  stock 1 number: 1702  stock 2 number: 76  open cash5721.567999999993\n",
            "..........\n",
            "2004-12-13 00:00:00\n",
            "Total portfolio value: 15873.481999999993  stock 1 number: 1701  stock 2 number: 76  open cash5725.732599999993\n",
            "..........\n",
            "2004-12-14 00:00:00\n",
            "Total portfolio value: 15891.931999999993  stock 1 number: 1700  stock 2 number: 76  open cash5729.941999999993\n",
            "..........\n",
            "2004-12-15 00:00:00\n",
            "Total portfolio value: 15907.310999999994  stock 1 number: 1699  stock 2 number: 76  open cash5734.124699999993\n",
            "..........\n",
            "2004-12-16 00:00:00\n",
            "Total portfolio value: 16047.255399999993  stock 1 number: 1698  stock 2 number: 76  open cash5738.308399999993\n",
            "..........\n",
            "2004-12-17 00:00:00\n",
            "Total portfolio value: 16066.598499999993  stock 1 number: 1697  stock 2 number: 76  open cash5742.549899999993\n",
            "..........\n",
            "2004-12-20 00:00:00\n",
            "Total portfolio value: 15899.481699999993  stock 1 number: 1696  stock 2 number: 76  open cash5746.833699999993\n",
            "..........\n",
            "2004-12-21 00:00:00\n",
            "Total portfolio value: 15605.154699999992  stock 1 number: 1695  stock 2 number: 76  open cash5751.034199999993\n",
            "..........\n",
            "2004-12-22 00:00:00\n",
            "Total portfolio value: 15647.157099999993  stock 1 number: 1694  stock 2 number: 76  open cash5755.104099999993\n",
            "..........\n",
            "2004-12-23 00:00:00\n",
            "Total portfolio value: 15669.086099999993  stock 1 number: 1693  stock 2 number: 76  open cash5759.213599999993\n",
            "..........\n",
            "2004-12-27 00:00:00\n",
            "Total portfolio value: 15782.610899999992  stock 1 number: 1692  stock 2 number: 76  open cash5763.296099999993\n",
            "..........\n",
            "2004-12-28 00:00:00\n",
            "Total portfolio value: 15961.522499999992  stock 1 number: 1691  stock 2 number: 76  open cash5767.442999999993\n",
            "..........\n",
            "2004-12-29 00:00:00\n",
            "Total portfolio value: 16093.719499999992  stock 1 number: 1690  stock 2 number: 76  open cash5771.497499999993\n",
            "..........\n",
            "2004-12-30 00:00:00\n",
            "Total portfolio value: 16210.34339999999  stock 1 number: 1689  stock 2 number: 76  open cash5775.589299999993\n",
            "..........\n",
            "2004-12-31 00:00:00\n",
            "Total portfolio value: 16229.588999999993  stock 1 number: 1688  stock 2 number: 76  open cash5779.736199999993\n",
            "..........\n",
            "2005-01-03 00:00:00\n",
            "Total portfolio value: 16209.834099999993  stock 1 number: 1687  stock 2 number: 76  open cash5783.891799999993\n",
            "..........\n",
            "2005-01-04 00:00:00\n",
            "Total portfolio value: 15910.259699999993  stock 1 number: 1686  stock 2 number: 76  open cash5788.044699999993\n",
            "..........\n",
            "2005-01-05 00:00:00\n",
            "Total portfolio value: 15849.837199999993  stock 1 number: 1685  stock 2 number: 76  open cash5792.1271999999935\n",
            "..........\n",
            "2005-01-06 00:00:00\n",
            "Total portfolio value: 15963.905599999995  stock 1 number: 1684  stock 2 number: 76  open cash5796.221199999994\n",
            "..........\n",
            "2005-01-07 00:00:00\n",
            "Total portfolio value: 15948.192099999993  stock 1 number: 1683  stock 2 number: 76  open cash5800.370299999993\n",
            "..........\n",
            "2005-01-10 00:00:00\n",
            "Total portfolio value: 16514.022299999993  stock 1 number: 1682  stock 2 number: 76  open cash5804.534899999993\n",
            "..........\n",
            "2005-01-11 00:00:00\n",
            "Total portfolio value: 16300.540099999995  stock 1 number: 1681  stock 2 number: 76  open cash5809.010599999993\n",
            "..........\n",
            "2005-01-12 00:00:00\n",
            "Total portfolio value: 16016.700099999993  stock 1 number: 1680  stock 2 number: 76  open cash5813.380099999993\n",
            "..........\n",
            "2005-01-13 00:00:00\n",
            "Total portfolio value: 16982.81689999999  stock 1 number: 1679  stock 2 number: 76  open cash5817.571599999993\n",
            "..........\n",
            "2005-01-14 00:00:00\n",
            "Total portfolio value: 16619.96289999999  stock 1 number: 1678  stock 2 number: 76  open cash5822.302299999993\n",
            "..........\n",
            "2005-01-18 00:00:00\n",
            "Total portfolio value: 16694.489199999993  stock 1 number: 1677  stock 2 number: 76  open cash5826.799999999993\n",
            "..........\n",
            "2005-01-19 00:00:00\n",
            "Total portfolio value: 16779.92519999999  stock 1 number: 1676  stock 2 number: 76  open cash5831.279599999993\n",
            "..........\n",
            "2005-01-20 00:00:00\n",
            "Total portfolio value: 16476.337699999993  stock 1 number: 1675  stock 2 number: 76  open cash5835.800199999992\n",
            "..........\n",
            "2005-01-21 00:00:00\n",
            "Total portfolio value: 16657.63529999999  stock 1 number: 1674  stock 2 number: 76  open cash5840.2606999999925\n",
            "..........\n",
            "2005-01-24 00:00:00\n",
            "Total portfolio value: 16602.46559999999  stock 1 number: 1673  stock 2 number: 76  open cash5844.823599999992\n",
            "..........\n",
            "2005-01-25 00:00:00\n",
            "Total portfolio value: 16579.78719999999  stock 1 number: 1672  stock 2 number: 76  open cash5849.3775999999925\n",
            "..........\n",
            "2005-01-26 00:00:00\n",
            "Total portfolio value: 16765.28209999999  stock 1 number: 1671  stock 2 number: 76  open cash5853.949399999992\n",
            "..........\n",
            "2005-01-27 00:00:00\n",
            "Total portfolio value: 16709.07809999999  stock 1 number: 1670  stock 2 number: 76  open cash5858.603099999992\n",
            "..........\n",
            "2005-01-28 00:00:00\n",
            "Total portfolio value: 16813.90389999999  stock 1 number: 1669  stock 2 number: 76  open cash5863.223599999992\n",
            "..........\n",
            "2005-01-31 00:00:00\n",
            "Total portfolio value: 17088.27829999999  stock 1 number: 1668  stock 2 number: 76  open cash5867.872299999992\n",
            "..........\n",
            "2005-02-01 00:00:00\n",
            "Total portfolio value: 17364.13949999999  stock 1 number: 1667  stock 2 number: 76  open cash5872.661799999992\n",
            "..........\n",
            "2005-02-02 00:00:00\n",
            "Total portfolio value: 17473.698699999994  stock 1 number: 1666  stock 2 number: 76  open cash5877.594899999992\n",
            "..........\n",
            "2005-02-03 00:00:00\n",
            "Total portfolio value: 16982.69969999999  stock 1 number: 1665  stock 2 number: 76  open cash5882.589199999992\n",
            "..........\n",
            "2005-02-04 00:00:00\n",
            "Total portfolio value: 16906.81809999999  stock 1 number: 1664  stock 2 number: 76  open cash5887.662899999992\n",
            "..........\n",
            "2005-02-07 00:00:00\n",
            "Total portfolio value: 17021.942699999992  stock 1 number: 1663  stock 2 number: 76  open cash5892.657199999992\n",
            "..........\n",
            "2005-02-08 00:00:00\n",
            "Total portfolio value: 17026.781899999994  stock 1 number: 1662  stock 2 number: 76  open cash5897.7156999999925\n",
            "..........\n",
            "2005-02-09 00:00:00\n",
            "Total portfolio value: 17313.74919999999  stock 1 number: 1661  stock 2 number: 76  open cash5902.785799999992\n",
            "..........\n",
            "2005-02-10 00:00:00\n",
            "Total portfolio value: 17023.891199999995  stock 1 number: 1660  stock 2 number: 76  open cash5907.985199999993\n",
            "..........\n",
            "2005-02-11 00:00:00\n",
            "Total portfolio value: 17114.65649999999  stock 1 number: 1659  stock 2 number: 76  open cash5913.028299999993\n",
            "..........\n",
            "2005-02-14 00:00:00\n",
            "Total portfolio value: 17408.592099999994  stock 1 number: 1658  stock 2 number: 76  open cash5918.148099999993\n",
            "..........\n",
            "2005-02-15 00:00:00\n",
            "Total portfolio value: 17881.46389999999  stock 1 number: 1657  stock 2 number: 76  open cash5923.446099999993\n",
            "..........\n",
            "2005-02-16 00:00:00\n",
            "Total portfolio value: 18011.13429999999  stock 1 number: 1656  stock 2 number: 76  open cash5929.001499999993\n",
            "..........\n",
            "2005-02-17 00:00:00\n",
            "Total portfolio value: 18259.845799999996  stock 1 number: 1655  stock 2 number: 76  open cash5934.645299999993\n",
            "..........\n",
            "2005-02-18 00:00:00\n",
            "Total portfolio value: 17938.75839999999  stock 1 number: 1654  stock 2 number: 76  open cash5940.450399999992\n",
            "..........\n",
            "2005-02-22 00:00:00\n",
            "Total portfolio value: 17755.096799999992  stock 1 number: 1653  stock 2 number: 76  open cash5946.072399999993\n",
            "..........\n",
            "2005-02-23 00:00:00\n",
            "Total portfolio value: 17784.53519999999  stock 1 number: 1652  stock 2 number: 76  open cash5951.607199999993\n",
            "..........\n",
            "2005-02-24 00:00:00\n",
            "Total portfolio value: 17854.706099999996  stock 1 number: 1651  stock 2 number: 76  open cash5957.161199999993\n",
            "..........\n",
            "2005-02-25 00:00:00\n",
            "Total portfolio value: 18071.306099999994  stock 1 number: 1650  stock 2 number: 76  open cash5962.8110999999935\n",
            "..........\n",
            "2005-02-28 00:00:00\n",
            "Total portfolio value: 18039.752999999993  stock 1 number: 1649  stock 2 number: 76  open cash5968.552199999994\n",
            "..........\n",
            "2005-03-01 00:00:00\n",
            "Total portfolio value: 18151.965799999994  stock 1 number: 1648  stock 2 number: 76  open cash5974.271399999993\n",
            "..........\n",
            "2005-03-02 00:00:00\n",
            "Total portfolio value: 17990.555799999995  stock 1 number: 1647  stock 2 number: 76  open cash5980.0466999999935\n",
            "..........\n",
            "2005-03-03 00:00:00\n",
            "Total portfolio value: 18043.792599999993  stock 1 number: 1646  stock 2 number: 76  open cash5985.711999999993\n",
            "..........\n",
            "2005-03-04 00:00:00\n",
            "Total portfolio value: 17516.669099999992  stock 1 number: 1645  stock 2 number: 76  open cash5991.398099999993\n",
            "..........\n",
            "2005-03-07 00:00:00\n",
            "Total portfolio value: 17731.211099999993  stock 1 number: 1644  stock 2 number: 76  open cash5996.749899999993\n",
            "..........\n",
            "2005-03-08 00:00:00\n",
            "Total portfolio value: 17574.125499999995  stock 1 number: 1643  stock 2 number: 76  open cash6002.232199999993\n",
            "..........\n",
            "2005-03-09 00:00:00\n",
            "Total portfolio value: 17055.01949999999  stock 1 number: 1642  stock 2 number: 76  open cash6007.595299999993\n",
            "..........\n",
            "2005-03-10 00:00:00\n",
            "Total portfolio value: 17011.699499999995  stock 1 number: 1641  stock 2 number: 76  open cash6012.665399999993\n",
            "..........\n",
            "2005-03-11 00:00:00\n",
            "Total portfolio value: 17093.879499999992  stock 1 number: 1640  stock 2 number: 76  open cash6017.7354999999925\n",
            "..........\n",
            "2005-03-14 00:00:00\n",
            "Total portfolio value: 17161.80709999999  stock 1 number: 1639  stock 2 number: 76  open cash6022.876099999992\n",
            "..........\n",
            "2005-03-15 00:00:00\n",
            "Total portfolio value: 17181.129299999993  stock 1 number: 1638  stock 2 number: 76  open cash6028.0650999999925\n",
            "..........\n",
            "2005-03-16 00:00:00\n",
            "Total portfolio value: 17270.054799999994  stock 1 number: 1637  stock 2 number: 76  open cash6033.2709999999925\n",
            "..........\n",
            "2005-03-17 00:00:00\n",
            "Total portfolio value: 17299.420799999993  stock 1 number: 1636  stock 2 number: 76  open cash6038.548399999992\n",
            "..........\n",
            "2005-03-18 00:00:00\n",
            "Total portfolio value: 17697.62029999999  stock 1 number: 1635  stock 2 number: 76  open cash6043.869299999992\n",
            "..........\n",
            "2005-03-21 00:00:00\n",
            "Total portfolio value: 17713.390299999992  stock 1 number: 1634  stock 2 number: 76  open cash6049.411899999992\n",
            "..........\n",
            "2005-03-22 00:00:00\n",
            "Total portfolio value: 17762.47949999999  stock 1 number: 1633  stock 2 number: 76  open cash6054.959499999992\n",
            "..........\n",
            "2005-03-23 00:00:00\n",
            "Total portfolio value: 17451.805899999992  stock 1 number: 1632  stock 2 number: 76  open cash6060.559499999992\n",
            "..........\n",
            "2005-03-24 00:00:00\n",
            "Total portfolio value: 17579.146199999992  stock 1 number: 1631  stock 2 number: 76  open cash6066.002199999992\n",
            "..........\n",
            "2005-03-28 00:00:00\n",
            "Total portfolio value: 17504.62419999999  stock 1 number: 1630  stock 2 number: 76  open cash6071.506199999992\n",
            "..........\n",
            "2005-03-29 00:00:00\n",
            "Total portfolio value: 17484.85219999999  stock 1 number: 1629  stock 2 number: 76  open cash6076.980799999991\n",
            "..........\n",
            "2005-03-30 00:00:00\n",
            "Total portfolio value: 17383.59459999999  stock 1 number: 1628  stock 2 number: 76  open cash6082.427399999991\n",
            "..........\n",
            "2005-03-31 00:00:00\n",
            "Total portfolio value: 17551.29949999999  stock 1 number: 1627  stock 2 number: 76  open cash6087.804799999992\n",
            "..........\n",
            "2005-04-01 00:00:00\n",
            "Total portfolio value: 17478.78349999999  stock 1 number: 1626  stock 2 number: 76  open cash6093.240899999992\n",
            "..........\n",
            "2005-04-04 00:00:00\n",
            "Total portfolio value: 17169.29849999999  stock 1 number: 1625  stock 2 number: 76  open cash6098.630999999991\n",
            "..........\n",
            "2005-04-05 00:00:00\n",
            "Total portfolio value: 17335.44969999999  stock 1 number: 1624  stock 2 number: 76  open cash6103.854499999991\n",
            "..........\n",
            "2005-04-06 00:00:00\n",
            "Total portfolio value: 17591.30159999999  stock 1 number: 1623  stock 2 number: 76  open cash6109.129299999991\n",
            "..........\n",
            "2005-04-07 00:00:00\n",
            "Total portfolio value: 17538.37919999999  stock 1 number: 1622  stock 2 number: 76  open cash6114.559399999991\n",
            "..........\n",
            "2005-04-08 00:00:00\n",
            "Total portfolio value: 17816.048399999992  stock 1 number: 1621  stock 2 number: 76  open cash6119.980299999991\n",
            "..........\n",
            "2005-04-11 00:00:00\n",
            "Total portfolio value: 17929.15239999999  stock 1 number: 1620  stock 2 number: 76  open cash6125.5663999999915\n",
            "..........\n",
            "2005-04-12 00:00:00\n",
            "Total portfolio value: 17559.629599999993  stock 1 number: 1619  stock 2 number: 76  open cash6131.231699999991\n",
            "..........\n",
            "2005-04-13 00:00:00\n",
            "Total portfolio value: 17652.74779999999  stock 1 number: 1618  stock 2 number: 76  open cash6136.675799999991\n",
            "..........\n",
            "2005-04-14 00:00:00\n",
            "Total portfolio value: 16779.567699999992  stock 1 number: 1617  stock 2 number: 76  open cash6142.179799999991\n",
            "..........\n",
            "2005-04-15 00:00:00\n",
            "Total portfolio value: 16290.88289999999  stock 1 number: 1616  stock 2 number: 76  open cash6147.148499999991\n",
            "..........\n",
            "2005-04-18 00:00:00\n",
            "Total portfolio value: 15907.643399999992  stock 1 number: 1615  stock 2 number: 76  open cash6151.836899999991\n",
            "..........\n",
            "2005-04-19 00:00:00\n",
            "Total portfolio value: 16231.117399999992  stock 1 number: 1614  stock 2 number: 76  open cash6156.327999999991\n",
            "..........\n",
            "2005-04-20 00:00:00\n",
            "Total portfolio value: 16460.185199999993  stock 1 number: 1613  stock 2 number: 76  open cash6161.010099999991\n",
            "..........\n",
            "2005-04-21 00:00:00\n",
            "Total portfolio value: 16222.30199999999  stock 1 number: 1612  stock 2 number: 76  open cash6165.832799999991\n",
            "..........\n",
            "2005-04-22 00:00:00\n",
            "Total portfolio value: 16318.209399999992  stock 1 number: 1611  stock 2 number: 76  open cash6170.491899999991\n",
            "..........\n",
            "2005-04-25 00:00:00\n",
            "Total portfolio value: 16217.651399999992  stock 1 number: 1610  stock 2 number: 76  open cash6175.2043999999905\n",
            "..........\n",
            "2005-04-26 00:00:00\n",
            "Total portfolio value: 16281.754699999992  stock 1 number: 1609  stock 2 number: 76  open cash6179.877099999991\n",
            "..........\n",
            "2005-04-27 00:00:00\n",
            "Total portfolio value: 15894.97949999999  stock 1 number: 1608  stock 2 number: 76  open cash6184.583499999991\n",
            "..........\n",
            "2005-04-28 00:00:00\n",
            "Total portfolio value: 16066.49209999999  stock 1 number: 1607  stock 2 number: 76  open cash6189.167999999991\n",
            "..........\n",
            "2005-04-29 00:00:00\n",
            "Total portfolio value: 16094.19449999999  stock 1 number: 1606  stock 2 number: 76  open cash6193.814299999991\n",
            "..........\n",
            "2005-05-02 00:00:00\n",
            "Total portfolio value: 16106.241999999991  stock 1 number: 1605  stock 2 number: 76  open cash6198.4309999999905\n",
            "..........\n",
            "2005-05-03 00:00:00\n",
            "Total portfolio value: 16184.31919999999  stock 1 number: 1604  stock 2 number: 76  open cash6203.073199999991\n",
            "..........\n",
            "2005-05-04 00:00:00\n",
            "Total portfolio value: 16178.461299999992  stock 1 number: 1603  stock 2 number: 76  open cash6207.734699999991\n",
            "..........\n",
            "2005-05-05 00:00:00\n",
            "Total portfolio value: 16427.06429999999  stock 1 number: 1602  stock 2 number: 76  open cash6212.376899999991\n",
            "..........\n",
            "2005-05-06 00:00:00\n",
            "Total portfolio value: 16398.35639999999  stock 1 number: 1601  stock 2 number: 76  open cash6217.1405999999915\n",
            "..........\n",
            "2005-05-09 00:00:00\n",
            "Total portfolio value: 16468.71639999999  stock 1 number: 1600  stock 2 number: 76  open cash6221.876399999992\n",
            "--------------------------------\n",
            "Total Profit: $6468.72\n",
            "Total No. of days played: 499  out of overall days:  500\n",
            "Total portfolio value: 16468.71639999999  stock 1 number: 1599  stock 2 number: 76  open cash6226.648099999992\n",
            "--------------------------------\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "cbwMs_2LvjyY",
        "colab_type": "code",
        "colab": {},
        "outputId": "2ecfbbf2-7b21-458b-ea0e-8c924a345f78"
      },
      "source": [
        "# Test Stock Prices and actions taken by agent Stock Plot\n",
        "import matplotlib.pyplot as plt\n",
        "import datetime\n",
        "import numpy as np\n",
        "\n",
        "%matplotlib inline\n",
        "\n",
        "pd_bm=pd.DataFrame.from_records(Benchmark_Port_Value)\n",
        "pd_bm[0]=pd.to_datetime(pd_bm[0], format='%Y/%m/%d')\n",
        "\n",
        "x1 = np.array(pd_data1_test['Date'])\n",
        "y1 = portfolio_value\n",
        "\n",
        "x2=pd_bm[0]\n",
        "y2=pd_bm[1]\n",
        "\n",
        "\n",
        "\n",
        "plt.title(\"Portfolio Value vs Benchmark Over Test Data\")\n",
        "plt.xlabel(\"Days\")\n",
        "plt.ylabel(\"Portfolio Value in $\")\n",
        "\n",
        "plt.plot(x1,y1)\n",
        "plt.plot_date(x2, y2, c = 'red', marker='v', linestyle='-')\n",
        "\n",
        "\n",
        "#plt.plot(x1, z, '-', color='black');\n",
        "plt.plot(x1, y1, '-', color='blue');\n",
        "\n",
        "\n",
        "\n",
        "#plt.scatter(x1,Benchmark_Port_Value,marker='o')\n",
        "\n",
        "plt.legend(('Trading Model', 'Benchmark'))\n",
        "\n",
        "plt.show()"
      ],
      "execution_count": 0,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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v/6Vxx577KDzWCzBzu+uSuDkMdENZzyECKSj3uInKSkprF5t5jLMmjWL2NhY/vCHP1TLo6qoKi5X494DzjnnnGaTE6BXr158+OGHXHzxxZSXl/P111/TqVOnhgtaLIcZHo/v5XQ/bCgmOTGE7p0PzVmM1lIJYrZs2cLAgQO5/vrrGT58OHv37uXaa69l5MiRDBgwgLvvvrsy77x58+jbty/HH388779fNbP6xRdf5LbbzGaCU6dOZfr06Rx33HH06tWL9957D4Dy8nKuv/56BgwYwJQpU5g0aRL/+9//fMp0ySWX8J//mI3ovvjiCyZMmEBISEjl/YceeoiBAwcycOBAnnzyycr0u+++m759+3LqqaeyefPmyvTNmzczceJERowYwfjx49m0aVMzfHIWS+uTlevxkVbO6FHClKl5rSBRy2AtlRrc9eE61u/JbThjI+h/RDx3ThnQpLLr16/n5Zdf5rnnngPggQceIDk5GbfbzUknncT5559Pjx49uO6661i0aBG9evXi/PPPr7O+AwcOsGTJEtauXcuFF17IOeecw9tvv83u3btZu3Yt+/bto1+/flx//fU+y/fr14/33nuPnJwc5syZwzXXXFOpnJYvX86bb77J8uXLKS8vZ9SoUUyYMIHi4mL++9//snr1akpLSxk6dChjx44F4Nprr+XFF1+kd+/eLFmyhJtvvpkFCxb4bNtiaUuk7i/DrIIwbNxWwjlXFFCWn8z+1EN3TZxVKkFO7969OfbYYyuv58yZw0svvYTb7WbPnj2sX7+ewsJCjj76aHr37g3ApZdeymuv1dwm3nD22WcjIgwePJjdu3cD8M0333DhhRficrk44ogjmDBhQr0ynX322cydO5dVq1Zx3HHHVaZ//fXXnHfeeURHR1fm++abbygsLOS8884jKiqKqKgopkyZAkB2djbLli3jvPPOq6zD7XZjsRwKpO4rr3Y9+cJCtq1IBiA349Ac+gKrVGrRVIsiUMTExFSeb968mccff5zly5eTmJjI1KlTK6MA+DvdNiIiovK8IkJOY7c/uPjiizn22GO55pprqrVbXz2+5FNV2rVrV+lPslgOJfalVVcqRQXG2xCRVERxRjQX3ZLBf55MaQ3RAor1qbQhcnNziYuLIz4+nr179zJ//nwA+vfvz6ZNm9i2bRuqypw5cxpV7/HHH88777yDqrJ3714WL15cb/5evXpx77331hoiGz9+PO+99x5FRUXk5+fz/vvvc8IJJzB+/HjeffddiouLyc3N5aOPPgIgKSmJzp07Vw6feTwe1qxZ0yjZLZZgpaZScYUoid3y6NrHvAh++WnTrBWPRyksru2vCRaspdKGGD58OP3792fgwIH06tWLcePGARAdHc1zzz3H5MmTadeuHePGjWPjxo1+13vhhRfy5ZdfMnDgQPr27cvo0aNJSEiot8wNN9xQK23UqFFccskllcN1N9xwA4MGDQLMLLQhQ4bQo0cPxo8fX1lm7ty53HDDDcyaNYvS0lKmTp3KkCFD/JbdYglWdqRWdfwej5KfHUp8ips3/hXJ2CHQd1BZk+qdeFkGn/+7HQVFHqIjg88uCNjOj8HKyJEjteYmXRs2bKBfv36tJFFwkJ+fT2xsLGlpaYwePZrvvvuOYIzobL8rS1th4mUZLHjDDG8dyHTTtaebo4cVsnZhMiFRZYw8OZfvPmr88Je4FFT4ekURx4+Iam6x625XZKWqjmwon7VULABMnjyZ3NxcysrKuOuuu4JSoVgsbYm9u6vOV/9cQmleFO075gMQEuqhCeuaq7FyXWmLKhV/sUrFApiZWxaLpflIP1A1nfjdT0rAE0P/fma4yhXmoaSk7sk1m3eU0rNLGKGhdedZtzE4Z0oG34CcxWKxHALkpocRmWLifr39b/P+Pmqo+RsSqpTWoVRefjeXo3uEc83MTJ/3JdRMANj6S3C6LqxSsVgslgBQlB1Ot75mplfG1niOGJjNuafGAhAS5sHtw0+/dlMx118dDsC6dbXvl5YpWmYUU+rO4Oy+g1Mqi8ViacPsPlCGpySMgYOV3/09k5f+m8vutYnERpsuV4Edq5JYvrb6yvpzryikNCcSAF9h/vZnVg15pe0NTu+FVSoWi8XSzKzdZLzwPboJj85I5upz46vdLzhgHOx3/qOgWnpWWijt++QQnlBMQX7t4bG9ByrWvihZ2+K5ZHpG8wt/kFilEiSEhIQwdOhQhgwZwvDhw/n222+btf6vvvqKM844o1nrrIvY2NgWacdiCVbWbTJjW0f38m1NqNs48Zd/XX0BZFmJi4hoJSTcw7qvktl9oPoY2b50Y6nEdzWzyOY+EXwr8q1SaSzDhoFI7WPYsIOqNioqitWrV7NmzRruv/9+ZsyY0UwCtxyqiscTvCt9LZaWYss2838w8Oj6V81nbo9jW2rV3GJ3iYuISKUozcTPO/OK6sFt//F0CQAJKdVX6wcTVqk0lrFjITy8elp4OHgFVjxYcnNzSUpKqrx++OGHOfbYYxk8eDB33nknANu3b6dfv35MmzaNAQMGcNppp1FUVASYkPmnnHJKpdWzdetWwCxwPP/88znmmGO49NJLK2N19ejRg5kzZzJ27FhGjhzJqlWrmDhxIr17966Mjpyfn8/JJ5/M8OHDGTRoUGV4/Qo5brzxRoYPH86uXbsq5U5PT2fs2LHMmzev2T4bi6UtsH2n+d8a0jei/owqPDcnv/LSXeoiMqpqVtfqLxM4/8Z0RODNj/L4+r/GMhk9LniVSuXmT4fLMWLECK3J+vXrqy6mT1edMKHuY8wYVZdLFaoOl0t17Ni6y0yfXqvNmrhcLh0yZIj27dtX4+PjdcWKFaqqOn/+fJ02bZp6PB4tLy/XX//617po0SLdtm2bhoSE6A8//KCqqhdccIG+/vrrqqo6atQofffdd1VVtaioSAsKCnThwoUaHx+vu3bt0vLych0zZox+/fXXqqravXt3feaZZ1RV9bbbbtNBgwZpbm6uHjhwQNu3b6+qqmVlZZqTk6Oqqmlpadq7d2/1eDy6bds2FRFdunRp5bPExMTovn37dNSoUbpgwYIGn70xVPuuLJYgZcgp6RoaW1zn/cquI7xMR52RXpkeElWiI09Pr7wfGl1See6dvn1PqcZ1ydOU3jkt8TiOzKxQP/rY4Jw+EMxEREDHjrBvn/l+RaBTp9rWSyOpGP4CWLp0KZdffjk//fQTCxYsYMGCBQxzhtfy8/PZvHkz3bp1o2fPngwdOhSAESNGsH37dvLy8ti9e3fljo+RkZGVbYwaNYquXbsCMHToULZv387xxx8PwJlnngnAoEGDyM/PJy4ujri4OCIjI8nOziYmJoaZM2eyePFiXC4Xu3fvZv/+/QB0796dMWPGVLZTVlbGySefzNNPP91gGH2L5VAkfX8IMUmlgG9LJTyxmNLsSEKj3BR5+eo9pSFERyvHnZ3BykXR7N0eTrIThi8z3UVYXDHHHFtI987JxCYUUlzkX3TylsQqlZr4sy/63r3QqxcUF0NkJKxcaRRLMzF27FjS09NJS0tDVZkxYwbXXXddtTzbt2+vFsY+JCSEoqKiesPP18zvvXdJxT2Xy1Utn8vlwu128+abb5KWlsbKlSsJCwujR48elWH3vcPzA4SGhjJixAjmz59vlYrlsCQnPZSUznUHjPxptYutuwo492yhtNQohtIyRctDiIqGT1+t7YAvLRHcxaHEJ5j/8ZBQxeMOPg9G8EnUFujcGa66ykwkv+qqZlUoAD///DPl5eWkpKQwceJEZs+eTX6+GXfdvXs3Bw4cqLNsfHw8Xbt2rdwOuKSkhMLCwoOWKScnhw4dOhAWFsbChQvZsWNHnXlFhNmzZ/Pzzz/zwAMPHHTbFktbozArgvad6p600qd7OJOOjyEkrGplfUaO8ZPEVn9HI6qd+f8tyHWhZaEkeiuVcmupHDrccYdZ8nrHHc1SXVFRUeVQlqry6quvEhISwmmnncaGDRsqt9+NjY3ljTfeqLYvfE1ef/11rrvuOv72t78RFhbG22+/fdDyXXrppUyZMoWRI0cydOhQjjnmmHrzh4SEMHfuXKZMmUJ8fDw33njjQctgsbQFCos9eIrD6NCh4bwh4Z4qpZLtBkKJia6uKHZvjaDf6Bwy95gRhKQkcz8khKBUKgFziANHAguBDcA6YLqTngx8Bmx2/iY56QI8AWwBfgSGe9V1hZN/M3CFV/oIYK1T5gmcUP71HQ066i1Bjf2uLMHOlh3GuX7J9PQG86b0ztEOfbNVVfXjRfkKqjfPyqiVr++4jEon/S13m/t9xmZqVLuC5hW+HvDTUR/I4S83cLuq9gPGADeJSH/gz8AXqtoH+MK5BpgM9HGOa4FnAUQkGbgTGA2MAu4UkYr5ts86eSvKTQrg81gsFotPPltagMej5BaUc95v8wBIqn+fOwDCIxS341N54U3jo7z4zNrh7GPiqnylE8cbiyU0VPF4gs9SCZhSUdW9qrrKOc/DWCxdgLOAV51srwJnO+dnAa85SnEZkCginYGJwGeqmqmqWRjrZpJzL15Vlzpa9DWvuiwWi6VF+GBhPqcdF8OTb+Ry1R+yWfO5cbInJzXcvYaFe3CXmXw//uAiql0h44bVVipxceZvbOd8fj3BOF1CQkCDcPirRRz1ItIDGAZ8B3RU1b1gFA9QMfLYBdjlVSzVSasvPdVHuq/2rxWRFSKyIi0tzaeMWs+sKUtwYL8jSzAy7wuzyn3ztnKys6t+oymJ/igVcJcZxbBvZzgdupX4zJflRMEfd2pVAMrQsOB01AdcqYhILPBf4DZVza0vq480bUJ67UTVF1R1pKqO9LWjYWRkJBkZGbbTCmJUlYyMjGrrbiyWYGD1GvM3M0vx7kLat2u4ew2PUErzwujYN4fC/TEMGup7pXyv3ubv7ddXWTEhIaBBOPwV0NlfIhKGUShvquq7TvJ+EemsqnudIayK+bGpGOd+BV2BPU76iTXSv3LSu/rI32i6du1KamoqdVkxluAgMjKycvGmxRIsbN9sutGcnOrpHVL8UyruwnAObArnjKvTefOJJJ/55jyRxI83FzNqUNV849Cw4Bz+CphSEREBXgI2qOqjXrc+wMzmesD5+75X+s0iMhfjlM9xFM984O9ezvnTgBmqmikieSIyBjOsdjnwZFNkDQsLo2fPnk0parFYDmM8HiVjl7EesrMh1KtH7ZRS97T/CirXGbs8zHkyuXK/lZpERrgYNai6lR4WBloefEsNA2mpjAMuA9aKyGonbSZGmbwlIr8FdgIXOPc+Bk7HTA8uBK4CcJTHPcD3Tr67VbVin80bgFeAKOAT57BYLJYWYd2WEsoLTWeflyuEeUVr6tergWCSQISjJ+KPKCQ2unFbRoSGHmbDX6r6Db79HgAn+8ivwE111DUbmO0jfQUw8CDEtFgslibz6dfFgNEMa79MJizey5Ee2nCHHx1jnDCJ7esO6VIXYaEKHhcej+JyBY9yCT7byWKxWNoI36008fMik822E6HhJjRLh745dZbx5sYrjUI6dWLj9yEKCzeKxB1kUfCtUrFYLJYmsv4nEzk4JslYGlfdWIQq7F0f30BJw5knxfLLrlKeuye50W2HOONMhcXBtTGeVSoWi8XSRFJ/Cad992KiYk3HfmRX45xvzHBUz67hfg2V1SQ8zAydFZUE11IIq1QsFouliRRlh9GhczlzX46g3wmZXHdRXIu1XaGISoNMqdgoxRaLxVIPbrdSXKq1pvt6PEp5cRgJiTBuWBTrF9cOrxJIKvYFLCy1w18Wi8XSZjhqdDZxMbW7ypx8D1ruIjGxdSyF8DDzt7g4uCwVq1QsFoulHnas8r3KPXWfcc4nJbbOdN6ICkvFKhWLxWJpe7jd1Tvv3QfMXN6UlNZRKjExpt3cPDv8ZbFYLG2OrLzqC0L2OErFnxhfgSDOUSrZVqlYLBZL2yM9u7pSefI5M/zVqX1rKRXTbm6+Hf6yWCyWNkdGZpVF8NnSAlZ/ZjbjOnlsy876qiA+3hn+yreWisVisbQ5Nm4rY8CJmfx3QR6bfnFXpnfpENYq8iTEViiV4LJU7DoVi8ViqQ9RUOG6y6IoLw7jT0VZnHW26civmZEBpLSKWPFxxiYoKLRKxWKxWNoMEuJB3SGUFxuLZOvyJJ5cb7b9/etN/sX4CgSJcSYkTH6+ctql6Qwd4uKhP9aOIZaVW87ytSZ68smjo5sUEqYxWKVisVgs9SHGEnBFlOEpMYqlLD8CV7ibIzu3Xhea6FgqhYXw2b/b8dm/4aE/Vs+zY28Z/YeWUnjA7BiZlVteqYwChfWpWCwWSz3joljNAAAgAElEQVTEdzJh7Rd+U7XnybSZGcz+T2Gr7mOSnOBYKgV1D3+NPz2fwgMxJPfM5fYHMomODHyXby0Vi8Vi8cFjr+Swa285rpAwOg/IZvzIxMp7z9yVHPBhpIZIiDUKIj29bjky9pll9zdOL+ee6Y0Pr98UrFKxWCwWH/zuqgQA4rrkV+5dUkFrK5QKGSS0nAP7qqyPL78r5FejoyuvE9uXoVrAPdN9h5oJBHb4y2KxWOohb3csISFmiOnBf2Vz5f9ltLJEVbjCyslKq/KRnDwmmsTueew+YIbqCvNCSEhx11U8IFhLxWKxWHwQnlhMabbZ7rfCUvnjNYn1lGh5XGEe8jOrr5PJ2RnHstV5nHdaGMUFISR3bFmlYi0Vi8Vi8UF0fJVjPjQ0uNaCVBAa7qE4O6JWemaOsmZjMUVp0UTHtKzsVqlYLJZDCo9HWbe15KDrcZdV+U1cQdpThoZ7wGOEe+jFbO58IguA1L3lHP8rY6HEJwSZUhGRi0Skl3M+WES2iMgeETkv8OJZLBZL43jitVwGHhXB2demH1Q95WVV3WN+bnBqldAIE/crIrmI//ttIscONrO97p6eRP6eWMadk8Grj7XcFsfgn6Xyf8Bu5/weYDowArgzUEJZLBZLU1m93ryhv/+vdjz2Sk6T6ykvcyEhptMuLW792V6+CI8wVkjKEcYyS0mq6tLHnZPBN++m0LtbeIvKVK9SEZE7gS7An0TkLuB44FjgWiBBRP4mIuMDL6bFYrH4R2Zm1fn7nzTdSe1xC2GxpQCUFgenpRLmKJUu3UxY/o7JVTPBFr/TMutSalLvJ6WqdwGbgFSgGJivqrOc9D2qereqLvZVVkRmi8gBEfnJK22oiCwTkdUiskJERjnpIiJPOENrP4rIcK8yV4jIZue4wit9hIisdco8ISLB+SphsVhalPR0cIW7iUopZNeOximDZ+bksGO3cdB73C6iHGd9WWlwKpUIR6kcfbS5bp9cNaG3tVb7+/NJXQ9MBPoBtwOISH9gXgPlXgEm1Uh7CLhLVYcCf3OuASYDfZzjWuBZp51kzDDbaGAUcKeIVKziedbJW1GuZlsWi+UwJDtTCIspI7FTKel7fa+a+N8X+WzcVt2Zf8djWdz0mwSGHmeCL6o7hNhEYwG4g1WpRBmlMmSgsVBio1tfzgYlUNUNqnqRql6uqnudtPWqem8D5RYDmTWTgYqwngnAHuf8LOA1NSwDEkWkM0aZfaaqmaqaBXwGTHLuxavqUlVV4DXgbL+e2GKxHNLkZLmIjHPTqUs5+em1p9uu21rCOafEctKUomrpn35m/CfZO+PYsbcMLXeRmGLSyoNVqUQapTJ2aPXn7DuuZtfbcrT04sfbgPki8g+MQjvOSe8C7PLKl+qk1Zee6iPdJyJyLcaqoVu3bgf3BBaLJagpyA0hNqGcHj3hhwXh7D5QVm0jradeLQAiyNgdWa3crm1V3eGb7+cDSaS0M0rFUxrYyL5NJTFRkTA3owZXPUtZmeJytVxYlpq0tPq9Afidqh4J/A54yUn3NfinTUj3iaq+oKojVXVk+/btGymyxWJpSxTnhRKf6KHvUaZ7+25N9WGuLVuNogiPrL7nfNaeCLoOyQZgwZcmT4cOpqvpf1xuQGVuKs8/GM+c/xURHlbVJYaGSqtGT25ppXIF8K5z/jbGTwLG0jjSK19XzNBYfeldfaRbLJbDnLKCMBKTlaH9jeWx+LtSeo7MYt6iAjZsK+Hnn0x6cV6V9bI/w01pTiTDRpYTlVLIorfNbo4xMbBpeynffRJc4Vkq6NM9nItOb9l1KA3h9/CXiBwH9PAuo6qvNbK9PcAE4CvgV8BmJ/0D4GYRmYtxyueo6l4RmQ/83cs5fxowQ1UzRSRPRMYA3wGXA082UhaLxXKIkZ1Xjqc0lHbtYMwQMyT0/D+jKM6M4owTKwY5jP/BXRDO3nQ3nduF8tV3RUAcg/q72PRzMRuXmEi/l50bSZ/uLbvOo63jl1IRkdeB3sBqoMJmrHCQ11VmDnAi0E5EUjGzuKYBj4tIKGaK8rVO9o+B04EtQCFwFYCjPO4Bvnfy3a2qFR6oGzAzzKKAT5zDYrEcxmzdVQpE0bEDdO8ShiuijOLMKOeuEJFcxCW/LSQmRnh6VjIff1XI6SdGc+PNCi4PU06J5JcdhWxcYlapnzwmpjUfp03ir6UyEujvzLTyC1W9pI5bI3zkVeCmOuqZDcz2kb4CGOivPBaL5dBn937zzts+xYzsx7YvITe1apirz+AiXn4ohZXri3h6FixaVsbf7sonc3s8f300hzGDkwiZJsx9Ajp2K8a8s1oag79K5SegE7A3gLJYLBbLQZGVYxzs8fHGUR3mxMaqIDbevBcPOyaSkOhSlix2seenRE6dmsE9txk/yrEDI3nr0zyG97NWSlPwV6m0A9aLyHKgciqFqp4ZEKksFoulCWTnGqWRGGeUyuOPCbf9LpeMbTFoeQhxzio5l0to172IX7437toTxlSfs3TBxOByfrcl/FUqswIphMVisTQHuXnGMkmKN0ri0jPiuPQMCIspxV0YQnxc1Qj+Uce42b/BnI8Zbp3xzYVfSkVVFwVaEIvFYjlYcvKN0kiIr255VHiDExOq1m/06A5LgNDYEk722tfdcnA0FKX4G+dvnojkeh15IhKcq4EsFsthS16e0R7JCTVWwKtRJomJVUrljltj6T48ixUrtFUXCx5q1GupqOrxzl87wGixWIKevHzzNyXBt6WSkliV3rdnBNtX1o4NZjk4gjNKmsVisTSB/ALzNyWpuqXSsXchAPGx1iIJNFapWCyWQ4ZvF5o1KfEx1bu27xdGc/6NGVx1nh10CTQtHaXYYrFYAkJuQTkZW82c4Zo+ki4dwnj76ZTWEOuww29LRUS6i8gpznmUiFiVb7FYgobVG8wSOglr+hbCloPHL6UiItOAd4DnnaSuwP8CJZTFYrE0lrUbzda/j75Q0MqSHN74a6ncBIwDcgFUdTPQIVBCWSwWS2PZ+IuJ+zWgrx3Vb038VSolqlpaceFEGfY7uKTFYrEEmu07TJc0vF9kAzktgcRfpbJIRGYCUSJyKmaDrQ8DJ5bFYrE0jtRUCIkqJSUxOLf+PVzwV6n8GUgD1gLXYfY/+WughLJYLJbGkrYvhOik0oYzWgKKv7G/PMC/nMNisViCjuy0UJLa25lfrY2/Oz9uw4cPRVV7NbtEFovF0gSKMiM4enBJwxktAaUxOz9WEAlcACQ3vzgWi8XSeNKy3JQXh9Gla2tLYvHLp6KqGV7HblV9DPhVgGWzWCwWv1i13lgovbrb2F6tjb/DX8O9Ll0Yy8WuqLdYLEHBpl+ML6V3Dzvzq7Xxd/jrEa9zN7AduLDZpbFYLJYmkLrPLHzs0dUufGxt/J39dVKgBbFYLJamsj/NzCPqcYS1VFqbepWKiPy+vvuq+mjzimOxWCyNJ91RKt27hLWyJJaGLBXrN7FYLEFLfqGHl97JY9XyMCTMTXyMHf5qbRraTviuplYsIrOBM4ADqjrQK/0W4GaMb2aeqv7RSZ8B/BYoB25V1flO+iTgcSAEeFFVH3DSewJzMVObVwGXeccns1gshzbrtpYwbLhSlpsAQFh8MXaLqNbH39D3kSJyk4g8IyKzK44Gir0CTKpRz0nAWcBgVR0A/MNJ7w9cDAxwyjwjIiEiEgI8DUwG+gOXOHkBHgT+qap9gCyMQrJYLIcJz71RQFluJMm9cgFQj51OHAz4G/vrdaATMBFYhNlPJa++Aqq6GMiskXwD8ICqljh5DjjpZwFzVbVEVbcBW4BRzrFFVX9xrJC5wFkiIph1Mu845V8FzvbzWSwWyyHAosXgiijjL3d4AAgJ87SyRBbwX6kcpap3AAWq+irwa2BQE9o7GjhBRL4TkUUicqyT3gXY5ZUv1UmrKz0FyFZVd410n4jItSKyQkRWpKWlNUFsi8USTLjdyoblMfQcms/w/uEAdO9X1MpSWcB/pVLm/M0WkYFAAtCjCe2FAknAGOD/gLccq8OX3apNSPeJqr6gqiNVdWT79u0bL7XFYgkK/vNxHpf9PoMV64tx50dwwngPJ46K5u/PZfPNR/GtLZ4F/71aL4hIEibc/QdALHBHE9pLBd5VVQWWi4gHaOekH+mVryuwxzn3lZ4OJIpIqGOteOe3WCyHIB6PcvGvzYTU3j2zgChGDjFd2IzrEltRMos39VoqItIRQFVfVNUsVV2sqr1UtYOqPl9f2Tr4H07MMBE5GgjHKIgPgItFJMKZ1dUHWA58D/QRkZ4iEo5x5n/gKKWFwPlOvVcA7zdBHovF0ka484nsyvOnHjeLHMcfG9Fa4ljqoKHhrzUi8pmIXC0iCY2pWETmAEuBviKSKiK/BWYDvUTkJ4zT/Qo1rAPeAtYDnwI3qWq5Y4XcDMwHNgBvOXkB/gT8XkS2YHwsLzVGPovF0rZYv7HKEZ+xNZ5O/XIYdLTdOjjYaGj4qwtwCsZCuF9ElgJzMNZCvV4xVb2kjltT68h/H3Cfj/SPMTtN1kz/BTM7zGKxHAbk5QMob3yYT2aWh8vOjm1tkSw+aGjxYznGSpjvDD9NxiiYx0XkC1W9tAVktFgsFvJywRXh5tIzbKCPYMbf2V8460TWY4ahcjGLES0Wi6VFyM8VQiPLW1sMSwM0qFREpJuI/J+IrAI+woRLOUtVhwVcOovFYnEoLBDCrFIJehqKUvwtxq/yNnCtqq5oEaksFoulBkUFLsKjrVIJdhpy1M8AFjtTeC0Wi6XVKMxzER1vlUqwU+/wl6ousgrFYrG0NhfdkkHOrjgGDnE3nNnSqvjtqLdYLJbW4IcNxbz1VDI9RmTx0SsprS2OpQGsUrFYLEHNS28VAsIj94cRHmbD2wc7/u6nkiAi/6yI9CsijzR2hb3FYrE0hbU/eZAQD2eeFNPaolj8wF9LZTZmbcqFzpELvBwooSwWi6WC9DQXYbGlhIZaK6Ut4G+U4t6qep7X9V0isjoQAlkslsObJ9/IIT3Tw123JgGQneEiKqEMsHG+2gL+WipFInJ8xYWIjAPsjjgWi6XZufWyBO6enlR5nZ8dSlyinUrcVvBXqdwAPC0i20VkB/AUcH3gxLJYLIc7x5+bAUBRTiiJyXar4LaCX8NfqroaGCIi8c51bkClslgshyVud9XGrkveS8HtVsoKwmnXoaB1BbP4TUNhWqaq6hsi8vsa6QCo6qMBlM1isRxm/Ly9BG/fyY49ZeAJp2PH1pPJ0jgaslQq5vDZWNMWiyXgrFpXirdS2byzDAinS2c786ut0NB+Ks87f+9qGXEsFsvhzIbN1R3ym7ebsCw9uoa0hjiWJtDQ8NcT9d1X1VubVxyLxXI4s2WbcchPujyDT19LYclyo1T69PR39YOltWnom1rZIlJYLBYLsHMHuMLdjB7p4tPXYPGXIeDycPzwqNYWzeInDQ1/vep9LSJxJlnzAyqVxWI57Nixt4zl81KI6VTA0P5hAOzdEE90+yJio22IlraCv7G/BorID8BPwHoRWSkiAwIrmsViOZy45AazUqFgXwyjh0QCZteNi64sbkWpLI3F34HKF4Dfq+pCABE5EfgXcFyA5LJYLIcp4YnFdG4XyX3PZjGsfziTx9tw920Jf5VKTIVCAVDVr0TE2qMWi6XZKC0xf+fPN876mdcn1ZPbEqz4q1R+EZE7gNed66nAtsCIZLFYDkeyMlxEdyjgxFH2fbUt42/sr6uB9sC7ztEOuCpQQlkslsOPnMwQYhLsdsFtnXqViohUWCaXq+qtqjrcOW5T1awGys4WkQMi8pOPe38QERWRds61iMgTIrJFRH4UkeFeea8Qkc3OcYVX+ggRWeuUeUIqYsdYLJY2SUlBCNFxNnBkW6chS2WEiHQHrhaRJBFJ9j4aKPsKMKlmoogcCZwK7PRKngz0cY5rgWedvMnAncBoYBRwp4hUDLQ+6+StKFerLYvF0nYoK3ERHaOtLUZgGDYMRGofw4a1tmTNTkNK5TngU+AYzEJI72NFfQVVdTGQ6ePWP4E/UjFf0HAW8JoalgGJItIZmAh8pqqZjmX0GTDJuRevqktVVYHXgLMbeBaLxRLEuEtCiDpUlcrYsRAeXj0tPByOO/Qm0NarVFT1CVXtB8xW1V6q2tPr6NXYxkTkTGC3qq6pcasLsMvrOtVJqy891Ud6Xe1eKyIrRGRFWlpaY8W2WCwB4tq/ZDD1d2bfFE9JCLGxh6hSmTYNtMazqcKJJ8LmzVB86KzF8Xf2V2zNBBF5XVUv87chEYkG/gKc5uu2jzRtQrpPVPUFzFobRo4ceYj+ai2Wtse//m7WoLxwvwctDyE29hBxjarCjz/CBx+YY4WPgZ2yMrjwwqrrDh2ge3fo1q3q8L5u184MmQU5/iqVaqvnRSQUGNHItnoDPYE1jk+9K7BKREZhLI0jvfJ2BfY46SfWSP/KSe/qI7/FYmmD7E93A+HEteVNNkpLYdGiKkWyc6dRAmPGwP33myGwSZOMVRIVBV99BUVFsGOHyVtxrFsHn3wChYXV64+MrK1ovK+7doWIiOplhg2D1atryzp0KPzwQ0A+hoaiFM8AZgJRIlKx26MApThv/v6iqmuBDl51bwdGqmq6iHwA3CwiczFO+RxV3Ssi84G/eznnTwNmqGqmiOSJyBjgO+By4MnGyGOxWFqXrNxywIS0X/JDCRBOfFtTKllZ8PHHRol8+ink5hqFcdppcOed8OtfU22HsauuguefN39Hjaq7XlXIzKxSNDUVz7x5sG9f7XKdOlVXNDExEBoKbq+p2gH25TQUUPJ+EXkQeFFVr25MxSIyB2NltBORVOBOVX2pjuwfA6cDW4BCnDUwjvK4B/jeyXe3qlY4/2/AzDCLAj5xDovlsCe5Vy5nnV/Gyw8FR3gTj0e55a5MrrwghmMHRrJmYzFjj/cQl1IGJADw9XelACQmBP/wDlu3wocfGkWyeDGUlxvFceGFcNZZcPLJRrH44o47jCVyxx31tyECKSnmqGuGWEkJpKb6Vjw//ggffWQsoZqEhDTc/sGgqg0ewEp/8rWFY8SIEWqxHKrs3FeqoBqRXKivf5Db2uKoqupzc3MUVCdenqaqqr++Mk3Nq3jVcezp6Qqq97+Q1crS+qC8XHXpUtUZM1QHDKgSeuBA1ZkzVZctM3mCDY9H9cAB1fPPVw0NNTKHh6veeGOTqgNWqB99rL8+lWUicqyqft9wVovF0lqMm1gAJFKSGcVlZ8IPf8/kkRkNLSkLLPfcZxY0ph8wVsiaVaFEphRSXuqiLM9sHbzhB+MLGHR0WOsIWZPCQvj8c2ONfPghHDhg3vAnTDAzuaZMgV6NngDbsohA+/bwxBPGanG7A2+l4H+YlpOApSKy1VnxvlZEfgykYBaLpfHsWpNY7XrevFYSxOHdz/LZvdbIlJ1pupucjFDadS3l4adKOOPqdMLiisnfayaYjhocUWddB01DCxD37YMXX4QzzzTDTmedBW+/Db/6Ffz735CWBl98AdOnB79C8aZzZ+PDcbnM306dAtqcv5bK5IBKYbFYDhqPp2q2/YkXZvDVWynk5/r73hgYZswqxRXuRhW2Lk/izY/yKMoJp+cxJUy/PIXpl8OsoVnc/bswQqLctE8KoFIZOxbWrzeztCoICzMzpsaMge++M2k9esC11xrlcsIJtRcttkX89eU0A3794lR1B5AITHGORCfNYrG0MhfdkkF4XAl3PZUNQJ+xWSz8TwqdB2RTkBvSanJt3FbCpqVJHHdGDlpm3l/v+rsbd34EHTtWLRebdUsSr/+vkLseLqyrqubhjjvM27o3ZWVGmajCvfcaB/cvv8DjjxuH+6GgUMBYK4sWBdxKAT8tFRGZDkzDRCgGeENEXlBVO43XYmll3nrKzPK6e7p5yz/9dNNhxyV4yNxb+81/8YpC9qWXc+GkwM7fXbamBDSCyae6cLszWPZBCpuXmtUBA/pX79wvPaOF5hJ37w4bN5pzERg/HubMMZ2upVnw1zb+LTBaVf+mqn8DxmCUjMViCTL69THviuHhUJIZxZTfplfe83iUCcdGc9HkwHfiW7aXA9CnZyhL30/h6OMyielUwBOv5/DIjBbcgKu0FB5+GI4+2lghoc67dGQkzJ1rFUoz469SEaDc67oc36FSLBZLC+OKKGP4pAwuuz2D4ZMymHaBURh7dpjO86PZ7Vi+1sSWysmvCi2fkV1eu7Jm5OtvTVsDjzZDSBu+TiJ/bwy3TE3A5Wqh7mPePBg4EP74RzjpJONTmTatxZzWhyP+KpWXge9EZJaIzAKWAXUtZLRYLC1EcYkHT0kY7drBa/9IYeUnKZUd9n1/V6I7FIAol1xjFsGlZ1Upkp+3lfqsszkoLVMWvW2G5focaZRKiykSMENcp58OZ5xhFMgnn5jpwUcdZXwrxx/fIk7rwxF/HfWPYla5ZwJZwFWq+lggBbNYLL7xeJTb789kx94ydu0z4Tfat6ud7/qLEyjYH8Npl2byy/IklvxQREZOlVJ5490izrgq3Zk11rysWGcso6PGZBIa2oLKJDcX/vAHY50sWQKPPGKc75O8tltqQaf14UhDOz9GishtIvIUcCzwjKo+rqqBiURmsVga5Ld/zuTRmclMvCCPrbvKAGiXUnfHPflkMwy2dmMpWdlVw1/P3ZvMvFfasTe9ebfwfevTPKbdZiyj393aQrPPPB54+WXjN3n0UbjiCti0CX7/+0NnBlcboSFL5VVgJLAWs1blHwGXyBKUfLu6iNyCwI7BWxpm+dpiXnvcxMvauCSZKZPMCvRJJ9a9vqNXd9Ox33knZObW3q53z4GD/16zcsuZMy+PM6/J4KLJcaxflIwroozJJ9QRA6s5WbbMrDO5+mqzKHH5crOI0TuQo6XFaEip9FfVqar6PHA+ML4FZLIEGdl55YwbFsXoSTmtLcphz2+uKUIVXngrl0umZxDfsZjO/XM47bjoOsv06WEUz4FNCfyyw1gll92eUXl/X3rTlMrEyzJ48o0c3G5lyPg8fnNGHB++ZPwoHfrmkJcdQs+uAbQS9uyByy83ixp374bXXzdDXiNHBq5NS4M0tE6lrOJEVd3SBjaIsTQ/67aUAlFs+r6txSU/9Ni1MYq+o3OZdkEy0y4A/PBs9vbq2L9dbiyVU04Iw+3OYM7jKRxoglIpLVMWvJHCgjdg/cZMdq1Jps/YLK64DD5e4OH+v0QRHRmg1fwlJfDYY2axYmkpzJgBM2dCbK29BC2tQENKZUiNfVQq9lURQFU1PqDSWYKCjdvKgChcIXbTzNYkO6+c0pwIuvfKb1S58DAhvmseualxfPaOeTFISghh0kkw53E4kFF7SKwhNu0oAUwwyBWrzO/ix4UJREa4+MsNja7OP1RNYMTf/x62bDFhVB59FHr3DlCDlqbQ0B71Iaoa7xxxqhrqdW4VymHClm3mTVasUmlVzrs2CxCO6dN4CyBjWyz9J2RSXmisluQEFx3bGV9LembjlcqGrZWDGKz4OIX4rvlERgQwztjPP8PkyUaRhIbC/Pnw/vtWoQQhrRttztImWLjYdDpleRE8/WYOx5+b0UAJS3OTnVfOog/ikdByrrs0ptHlQ0OFdV8l0+8Es8ddjy6hHNHeUSoZjX9Z2LrTvGhEtTfxurr3KWl0HX6RkwO33w6DBhmH/D//aaYIn3ZaYNqzHDT+Rim2HKbc/VQ2yz6o2kHw5qlm5lFalpv2SaF8u7qI0lLlxFF1O4oPV9xu01k3xzqNOx7NobwwmcdezaFfz4Qm1/PTV0ms3VxMlw6RJMWHEBpTyqcfhTZ6XueOneZF4733lE+/yuT31zTzwEXFFOGZM03I+WuuMT6UDh0aLmtpVaylYqmTjOxy7vlzNPFd83hubm61e5t3mOGPccOiOGm0VSg1ycguJzqlhGGnZjVLfW+8HEZ0hwJumXpwnbfLJQzpa3wh0ZEuBh6XR8auxk/7Td1jlMrowZH88y/JHNmxGTfX+vZbs3/7NdeYFfDffw8vvGAVShvBKhVLnSxYUoi7IJxbb3dz3UXx/PGhTPqOM8Mn21LdFJc0fiz+UKew2EN2XjknnpNDWW4kP32VzJnTMvhhQ3GT65wzL4/sHXGc85viZg910r69Ul4YxoZtJfzhwUzmLSrwq9y+fYIrsozEuGZc3Lh7N0ydCuPGmQ2z3nwTvvkGRoxovjYsAccqFUudrF5vrJERg8xb6IP/l8zM/zMjpjtS3Xy9qqgy7/K1xXyyuKDFFU2nfjmMO6e6jycju5xHX8luUTkANmwrISbKRVJ8CD99VbWF74cvpvDAM/511jXZfaCMqedFImFu7v9z88+N6dBBAOH4U0p45M/JnHFi3f6adVtL6D8hk/0ZbjIOuIhMaGLssLp2YDzySHjnHfjLX4xj/je/MemWNoX1qVjq5MefjE9g9JDIyrReXY2C2bVHiYupCu8xerDJ075PDgc2NX3MvzGkZbnZ/3MC+3+GDxbmM35kFPO/LmT6Hzzs35DI8P6FLerr+XhhEeB7Zfv+/ebv3nQ3ndv5/2/31Gv5eEqSOOU36RzZ0UeAr4OkYwfTaWf+0rDCuvLWfDYsTuGP92ewf2ckcSlNDO/iawdGMHudfPFF29qq11ILa6lY6uSL92KI65JfrROsWJ29/4CydUftRXNpmxNY9mNRrfRA8Pr7Ves1zvpVLL0GF3Lxr+PYv8EotbWbyuoq2qwUFnvYsbuMP0wzHfOSH2o//89rQxkxOYMj2ofyl0f997N8sdCDK9zNh7OTG87cBLp0ruoCug0zcu3P8K0sKmyG1x5JofBADBf/ppGLJtPS4NNPIT4e3DXaCA+HpUutQjkEsErF4pP9GW7K8iL51enVfQHtk0KQ0HIOHIBdu6tPRU3qaZz5q9YFLqS6Nx/Pr96p5eyJIiqlkHOuM8Nh23a1TKyywRNy6NE1DDzm32nM4CJu5oIAAB2YSURBVCrLzhVhFNv+nxNY9amZRffyS/7/223fHEpil8KArQGZeEIUCd3yeOjFbM49z3yfndqF4got56ct1b/7MK+IKxffmsGjM+vZaKtCgdx3H5x7LnTrZhztkyfDgw+a1e8VW/uGhxunvI0afEhgh78sPtm4rRQIpUvn6mPaLpcQFlPGkvdSkDA3IZFllBeHEdupgDdfCeH0CVU7/gWa1d9XzTi68OYMnpiVQMeUaHbsDeO95yF1d8ss1ty63HSu487J4On7Y3C5qpRKWWEoEfGluAvCeeqNHF6b42b5vBS27iyld7eG42Jl7o5i4HF5AZN9QO8IsneYIbslPxTx4tP55O+NRctDmHZ7Nkvfr3qWcq+vdc7jVdPMSUuDlSurHzt3Vt3v08fsXzJihDmGDYPCQmOVFBdDSIjd2+QQImBKRURmA2cAB1R1oJP2MDAFKAW2YvZlyXbuzcBsW1wO3Kqq8530ScDjQAjwoqo+4KT3BOYCycAq4DJVbZlX5MOALTvN8MSRXWvP7inNMR1N7xG53DkzjNGDleSESIpLjZN+x05l2swMXn82mn07w5t3hpBDRnY5GdtiOeG8DBa/kwJUdXJHdgxFQsvZs6fZm63F3U9lA4nEdcln8TvJtWZnuVzCux+VsXtfEddfnMC+9CyWz4Nzr85jzecpvit1SMtyU14YTo+eLaMcxw2LIm9PlW88Nraq3W9WFvHdh0beo47cCfe9XrcCOe44uPXWKgWS4MPHlpBgdl58/nm7A+OhhqoG5MBENB4O/OSVdhoQ6pw/CDzonPcH1mC8nD0xCifEObYCvYBwJ09/p8xbwMXO+XPADf7INWLECLU0zF8fy1RQ/c8nubXumSBMqlm57lr3XJGlOuik9Mo8S34oDIh8T7yWraB637OZPu9Hd8zXHiN832tOKp7ziIFZ1eV7PVsvvz29Vv6yMo8i5dp9eMOyfb2iUEH1plkZzSZvNYYOrXoAr+P6hJcUVE85K1Vf/dOX+tCp/9ZTkr6qzFJGiDnp00f14otVH35YdeFC1ezsxrW/Z4/q+PGqe/cG5PEszQuwQv3p+/3J1NQD6OGtVGrcOwd40zmfAczwujcfGOsc873SZziHAOleCqpavvoOq1T8Y/DJ6YqrXH/ZVVLr3l8fy9QLb67dYaqq9h6dqaExxZUdkC+ltHNfqab0ztETzvNdR31sTy3VsLiq+nfuK/WZr9vQTI3tnNfo+it448PcOuuu4J35uZVyJP1/e2ceJlVxLfDfmZ11FmZAZJHFARFUdkRxDSiiBh/RJIqKW3iCGmISFPc1UUHjgktEDeJG1OAzYDCCRlCjCKisIiqLMgIyC7PB7H3eH3VnumemZ5jBnukGzu/77te3z6269/S91XVu1TlV1a3276yLtPRcTT0yr5qsosKnw87N0lfe8p/nuXl5CqrTn91d8xShYdIk1bi46kYlOlq1e3c9TLbrFTxb7dDpKUt18W9mqf7nP403IMYBT0ONSjh9KlcAr3r7nXDr3leS4ckAttWQD8P1deSqanmQ9MZPYcAANqwqZh3r+C0z6d7ld07evz984Rb8vGdK3Q7aceOUGZ/6w2ozdlb3r5SXK8eP3EP2piQ+3OTGYXRq3/DR2FPuyqOswB9aW9dI7s7dfGxb1wKfTxs9YLC0TLnkf1rSd0QeTz/cghP61x5xXlqmXHmV/3urtg33I7VO9LFrWxzFJb4qB/y8xYV8uqAdv1m+h3t65zBmDLSId3r37Briv2l+vuu2SkmpHYXlOU5aJexhdfJQ8LoQ4xKLeeXrE+jQzpZUMuonLEZFRG4ByoGXK0VBkinBo9O0nvR1XW8iMBGga9eujdL1kGP4cB5aPZCWupdbudfJ4uJcP3kDmHJZG2bc6P++c1f1wZCzXs9n+7okkrsVsHtrG77cVFqvUfluRxl/ejyf0jJYtxbWLfMPzpPoClwPaW3S0+Hj8mhWbyxmQJ+EoGnqYlNGKVoez7olKZw4AGJbl/DYM8Vc/Wu/b+CROXnkbUtiyj05lJTCby9v+CSPbZN8bFnZipatfLTqUMjfXxFefN25A/fmxLPhg1Zs+AA69MmDKB8D+vyEha5KSmD1ajfVyYoVblXEr75yjQ+ANm1gzx4311ZMjFuG99lnKemfy7rv3ctBTOsSMrbEkJZscT1GA2hIc2Z/N4J0fwETgE+AlgEy6/4KIzuzyvz+ke3b9WRZoiP4wN/v0aJFo/q92/XMq8o6YWr1Lq5jf5alEl2htz/qfDZPzXXdKDl55Tr2N5nV/DR5heWadES+1ujy11EXZ+nk27P03x8V1qnDQ7N3V6UPpKLCp3PezNOKCl+deee/X1jrmrFtiqvpNvTsLJXYMs0rrO1X2hcDR3s+p6gKBfc98J4Fbtc2xp9SXq66fr3q7NmqkyerDh6sGhvrP1mHDqrnnKN6992qb7+tmpnp/BoJCbWe84hxTkeJrtCFS+u+z8ahA5HoUwFGA18CaTXS9aW6o34z7hU0xtvvjt9R39fL8zrVHfWTG6KTGZXagGqrDl7FUVGhh8ds0/G86K+MEhNVx49Xffhh1Q8/VC2sv5LZmVWmL87PV8Sn/Uf5jcrk211Fldw9T//5nwIF1WkznMN63NXuWKCv5vGXcqsM0/z3C11lLD5d923xPn/Tp2uKqtR/a4lf319e665z75N1O8orgwAqt+Fj/YEHlfodMTBHWx+2f5XtU3NztceQHN2aUapJXfO1Rbs9Cqo9hubor67L0mNOz1ZQHTS6Hp+Tz6e6davqa6+pTp2qeuqpqq1b+5Vu00b1tNNUb7xR9R//UP3uO5cnGJMmqUZFOUPkUfmsxl3deL+XcXASdqMCzAV24JYkzsCFC3+L85Gs8ra/BqS/BRfptRE4K0A+BvjaO3ZLgLwHsNw75+tAfEP0MqPi5w/3Z+vCpf63cl20SMv6D9IYSnUaf3bCmBjV0aNVO3XyV1hRUar9+qlefrnqE0+ofvqpanHtin7Q6CwFX1VrJLGLa3XMei1Pv9pcXBU1dcxpWdqqg9PjhPP8ldiUe1zl+u4nrvKuqPBpxo/1O88DuelB1xo6+fzMKllSV6fDxdfXXVn+4X533efm5VUFKqQPz6n6+Vm7yzWle5526PPTndVjWy5w94EM3Ul7VdBNdNdb2z2o2zPL/AkzM1UXLlS9807Vs89WTUvzP4+4ONWhQ1WvuUZ1zhzVL79UrahouBJBorCydpfrH+7P1pLSult0xqFF2I1KpG6HklEp2FOh6cNztH3vXC0rq145VFT4anW1+EC3Hj5UQfXO/s/VenvV7dtVFyxQvf121TFjqldssbGqAweq/u//qj7zjOoXX+iuH/dqfNJe7dAnV7dnlini05EXZVZdv9KQBG6BFfV5E93b8q6cMt1fuvbP0dg2RVWVY8v27pojxtVtVM6f7K67NaO6Aas0cpUh071P/OmhvvcNelqP4wvdTLfqRmLsWBeq+8tfqnYLOCai2rev6mWXqT75pOqKFaoltSP0DCPUmFE5xI1KwZ4K7drf/3YdnVCqcYlF+vDsXF30caF+vbWkVoU+rMsqTe3hfBEzpm/e9xgCn891q8ybpzptmurIkapJSf4TJiToOa0X6mEJP+hzV76poDp9lr8i/ujzvXrXzN3atrPfbxKVUFrl7xgyJkuj4hveMgnG5Tc6A/Cbm7P0hunZKtHlCqrxSXt1yj3Z+u13tSvkAWdmaXSL2vJFH1c3goGtqgbj86kWFKhu3qy6fLnqSy9V93vU3Lp1U73gAmdglixRzW946LJhhJKGGhUL5zhIue3hXL5flcKFU7JZ/K9Ysr5tS0VxLNdf4SKJbjjuVeDCank+3XZc1X6foe1h6tL6LyLi5nTq2tXN7wSuKty0yUUarVzJYXNyyC9MZOtzq4niHCZe3w9eSochQzhx8GBOHD2Y2c+3Iz/DZfcVx7Iluic92Uwq/6J3bHegz37fhy6HuwDCZ/7sH73e99QcNq9P4NHbUnhxdj7Zm+JgwAAyVmWSQDEp/J1BtAE5vloo9ajhrZj6QA4zpydQnN3SLY9eVgZZWdW3zMz690vqWXpXxI1Ev+suGDIE0tL2+7cbRjgwo3IQUV6u+BTiYoWPPlai4sp5fkYKaycWc9N92Xz6Xhz5O9oAMH2VMyjXXLuFr3PbsvildsS2LqGs0IWRDuwbfAr3fSLiVus78ki48EJyi7PZ+2QrnjrsGjqW7CRx/C9g5Up4/PGqyvXMmKd5momMZDHvMooVDKEnm1lHP/olfQMb8M8dsq/PGrIe0WWAG1cTE19CfEIZSx7JpW2rKI4Y2Zqdm1PJ/2orrfoew6BVM9hNMmXEMZ6XXIhtcjJMn15lFKZnZbGhZDJvcRZT/zoGHlpe971ISnJGITXVrRUycKDbT031y9PSXDjv6ae7ebASEmDBApu2xDhgMaNyEJF2ZCH5OxOoKI7l23VxpHbfQ1xsIoN6x7HotLksfOsdzq4ab+qYenNnjugYy8wz8xh9Ugt6dQNEG7XmR310P8JV8Fk72zH0nGyYOdMdKCuD9ethxQqOfLoCPoOBfMYKhnAD02lDAdvoynWZM+HoRi6gHsBw0nFxHrCjpBPtSrKR/u7Yn7mMK5jN2D5beJpl7KIDCRRRBvRkkxsY+P77bouPdwYgLY1nB8xiQeEajjnpeEg9p7qRqNxPSYHYRiyxa/NgGQcJ4rrKDh0GDx6sK1euDLcaTULlC3peYQWJbYVTxuWwZMIymDbNVeDDhvHHXjNpf3I6CxdV8NyDbWrNlDtvUQG9e8TS78jGDRisix+zy+nVv4iy4mhefV05N8jKgj6f8of7dnPDl3cxc24H7tObAUiKymHNzPfokuKNVq8sq3V9BpH9kC10/v0lTjT7+WrHM3Ki6TJ1AgAnp3/BB98MYBSLWMwZ3Cl3cMcvvoQZM5yRaNmyaVch3LEDfv1rePVVMypGRCIin6nq4H0mbIjj5WDaDmZHfaVv975Zztn+Ys+pTpCe7sYq1DVOoYmpb6BhNbZv15djLq76HdddvyUk105Nz9OrbwseqbU9s0xjWrqghZTDc/TbuN56FF/q5vheNtGhYQSAOeoPLXw+pXL2mpnXFpJGKefnz4Unn3QLIDWmKybENHjurY4dSfxZH3gHjk1cx2N/6ReSa2d+XfdSuR1TYxhxTjZLXmtHl6N99Ew/nQ1P94Mrr7YWg2HsB7by40HCzi/9i4fklyby4Nh/krDpS5g0KawGpbGcPftyXj3y9/z386ZZPjcY55zp5g877jjcYlEjRtiiUYaxn5hP5UCnsBAeeoj1DyygX9FKWkfn88YbuYz6uU2c2RheWlDAr89qTUxME/pNDOMApqE+FWupRDjf7Shjb7Gv9oGyMnjqKRe6e+edrD7qHAD+MhczKPvBxee2MYNiGCHAjEoEk7+ngh49ILljKX96arcTqsK8edCvH0yeDL16Uf7hx4z/4k4A+v+UadINwzB+ImZUIpUBA3i+9fX4imPx5UZz6+RkRslifK1aw/nnu4F58+fD0qXMLzqmKttxvfdz0KJhGEYIMKMSqQwfzhQeA+BcFgDwLqPYRRo8+6xbeOncc0GE1xa4kenTZuwmLta6cAzDCB9mVCKU0mm3Vu3fw22M5U0AerVYzegPxrqWisey/0aRkFLEfX+se5lfwzCM5sCMSphZv6kEifLx5Ny8avJNFf4JEI/iK+6KuRuAgpxEPvvE7zdZvbGY79e2Ib1/UfMobBiGUQ9mVMLMvLeLQKO4915nIN7+YA8AGzeXAfBqzIVE46N3zGa69MqkRdpeCrLduJMnXs6j/1EJaFkMp58Wtp9gGIZRhRmVMLM7z4ULZ/8Qz9Bh8D/nuUfyzdZyABJOPxaioki4Yjzfb0xjyCl7KclpQadjcvnrs25OrAuuyebOKYnh+QGGYRgB2DQtYWbr927waWmefwLHJcv3sma9Mxg9bhsPxf+uGuGdfqTwAbB9XRLbgc7H5vLa4+1qntYwDCMsmFEJI4s/2cO78/3GpGPfXHasT+K0YS3pObSEqLhyjj6hCyz1L5b14M1J7MrKprgYCgvgqksPnClYDMM4+DGjEiaWLN/LmafEExXj4+pbc1i7Xpn7VFt6ppdQVhDPppWJtOteSFRU9ckQk9pEM/8Za5kYhhGZmFEJAz6f8vNxPrQshgXv7uGsk/2TJ65fW0qvbm7pjpmP2pgTwzAOLMyoNCNfbChmyKAoLv1tAQU/uNbGmSNaVkuTfkQcvU7I4Ywz4MKzm2+mXsMwjFBgRqWJueqmbGY/0pYxF+Wx5N8JVBS1ZvYDzqAc+7NsoqJqd2Vt/K8ZE8MwDkzMqDQxi96Oxlccy1t/S60m73tqDqvfNd+IYRgHFzZO5Sdy1U3ZtOuRT2lZ7XVpHnk+j22rkwAYeVFWlbyiQln3vrVGDMM4+GgyoyIifxORXSKyLkCWIiKLReQb7zPZk4uIPCYi34rIGhEZGJBngpf+GxGZECAfJCJrvTyPiUize7XPGJ/Fc/e3I2dLW/42L59Jt+ewbI1/upT7p7vPy6Zms/jlVM69KpuRF2U1fHldwzCMA4wmW/lRRE4GCoEXVLWfJ5sO5Kjq/SIyDUhW1RtFZAxwHTAGGAY8qqrDRCQFWAkMBhT4DBikqrtFZDkwBVgGLAQeU9W396VXqFZ+XPt1Mcf29o8xOWLgbr77PJnk7vms/qQFg0/Zy66NiYwYl82H86ybyzCMA5uwr/yoqh8AOTXEY4E53v4c4LwA+QvqWAYkiUhH4ExgsarmqOpuYDEw2jvWVlU/UWcVXwg4V5Pg8ynZuRVV32+Z7ubomvNmPt0HO4MCUFYUzaRpeeza6KZN+e1EWzTLMIxDh+b2qXRQ1R0A3md7T94J2BaQLsOT1SfPCCIPiohMFJGVIrIyMzOz0Ur7fEpS1z2ktVf++0URJ5yXzYLn2tG+dx6Xjm3Lr37lT5vQpoKvNkQDENOylF+Mat3o6xmGYRyoRIqjPpiTQfdDHhRVnaWqg1V1cFpaWqOVi4oSBgwvRstiuPK6Ij75p+vOmnCFa7nc87skHpmTx+H9csnbEc+mFYkc3i+X7F3R5j8xDOOQormNyo9e1xXe5y5PngF0CUjXGdi+D3nnIPImY+nrqQwfm11tDMmt17gurpgYYcqliUyerJQXx4AviuEnldO2VXRTqmQYhhFxNLdRmQ9URnBNAP4ZIL/UiwI7HsjzusfeAc4QkWQvUuwM4B3vWIGIHO9FfV0acK4m47mH/V1ZH31eVMto3DIpmbVflXPD9BxeedSc84ZhHHo02eBHEZkLnAqkikgGcAdwP/CaiFwJfA9c4CVfiIv8+hbYC1wOoKo5InIPsMJLd7eqVjr/JwHPAy2At72tSenTPZ6bH9rN3iLlxAHBx5n07RnPA1Pjm1oVwzCMiKTJQoojlVCFFBuGYRxKhD2k2DAMwzj0MKNiGIZhhAwzKoZhGEbIMKNiGIZhhAwzKoZhGEbIMKNiGIZhhAwzKoZhGEbIMKNiGIZhhIxDbvCjiGQC3+0jWSqQtY804SJSdYtUvSBydTO9Go/p1jhCqdMRqrrPGXkPOaPSEERkZUNGjoaDSNUtUvWCyNXN9Go8plvjCIdO1v1lGIZhhAwzKoZhGEbIMKMSnFnhVqAeIlW3SNULIlc306vxmG6No9l1Mp+KYRiGETKspWIYhmGEDDMqhmEYRuhQ1QN+w61j/z6wAVgPTPHkKcBi4BvvM9mTC/AYbqXJNcBAT34E8BmwyjvP1fVc8yYv/0bgzAD5VmCtd46VEabb9V7edbjll5c2l15AO+8+FAKP1zj2J2AbUBjK5xlw/rbADzWvu697FkSPOyJBryDlbHUE6RVYxuYCRzanbuEqZ0CF9yxWAfPruW8TvPN+A0zwZC2BfwFfeffzu3Dr5MmXePpUnqN9g+rjhiSK9A3oiL+SawN8DRwNTAemefJpwAPe/hjc8sMCHA986snjgHhvvzXuj3t4kOsdjfsjxwPdgU1AdMCfPTXSdAM6AVuAFl66+cAdzahXK2AEcDW1/+zHe/epMJT3LOD8jwKv1LxuA+5ZTT02Ab8It141y1kE3a+aZew1YEoz6xaWclZ5zn3UUynAZu8z2dtPxhmV07w0XYHPgbPCqZN3bAkwuLH18UHR/aWqO1T1c2+/AGflOwFjgTlesjnAed7+WOAFdSwDkkSko6qWqmqJlyaeursHxwJ/V9USVd2Ce0sYegDoFgO0EJEYL/8nzaWXqu5R1Y+A4iDHlqnqjlDfMwARGQR0ABbVcb/qvGdB9FgH5IdbryD3LyLul3cssIy1BDY0p27hKmcN5ExgsarmqOpuXItjtKruVdX3PT2+Bz4EOodTp0bkr8VBYVQCEZFuwADgU6BDZSHyPtt7yTrhmsGVZHgyRKSLiKzxjj+gqtuDXKbO/IACi0TkMxGZGCm6qeoPwIPA98AOIE9VFzWjXvvFT9FNRKKAh4Cp+7hMfc8zmB6RoFfQchZOveorY82o237xU/8DQIKIrBSRZSJyHsFpSDlLAs4F3osQnWaLyCoRuU1EpI5zVOOgMioi0hqYB/xOVfPrSxpEpgCquk1Vj8X1BU8QkQ6NyQ+cqKoDcc3Xa0Tk5EjQTUSScW813YHDgVYicnEz6tVoQqDbZGChqm4Lcrwh+YPqESF61Spn4darrjIGzfosG00o/gNAV3XToVwEPCIiPRuZH691NxfnI9kVATqNV9VjgJO87ZJ69KgipiGJDgREJBb3EF5W1Tc88Y9eF80Or0m4y5Nn4Jx0lXQGqr1dq+p2EVkPnCQiFTgnLcBV9eWvfEtX1V0i8n/AUBH5JAJ0GwlsUdVM7369get7vqQ59FLVlTSCED3P4Z4uk3H+njgRKcS9+TXoedbUI1L0ClLOjgduCbNewcrYCSLyanPdszCVs8DnsVlElgADRCQVeNpLe7uX/9Qa+ZcEfJ+Fc5Y/AbwVbp28lieqWiAir+C6OF9gX2gjnTCRuOGs7QvAIzXkM6ju3Jru7Z9NdefWck/eGb+TMRnnJDsmyPX6Ut1RuRnnqGwFtFG/w/BjXP9kJOg2DBdN0tI79xxgeXPpFXD+y6jbyVrpQA3J82zEdeu6Z9X0iCC9gpWzdyNAr2Bl7LrmvGfhKGe4cl8ZrJKKMwxHB7luCi6QIdnbtgAp3rF7ccYtKhJ0wjU4KgNBYoF/UE/EabVzNiRRpG+4N27FhdRVhr+NwYUXvufd0PcCHqDg3gY24cIyB3vyUd45VnufE+u55i1e/o3AWZ6sh5d3Ne7PdUuk6ObJ78KFLa4D/h0GvbYCObhwz4zKQo6LbMkAfN7n30KhW2MqojqeZ81n902E6FWznM2KBL2ClLEXgdPCoFuzljPgBO/7au/zynp0uwIX2PAtcLkn6+zpsSGgjG0Ls06tcEMF1uDK2KN4kYf72myaFsMwDCNkHFSOesMwDCO8mFExDMMwQoYZFcMwDCNkmFExDMMwQoYZFcMwDCNkHDSDHw0jEvEGga7FxfqX48ZuPKKqvrAqZhhNhBkVw2hailS1P4CItMfNsJuIfxS4YRxUWPeXYTQTqroLmAhcK45uIvKhiHzubScAiMiLIjK2Mp+IvCwiPxeRviKy3Jvgb42IpIfrtxhGXdjgR8NoQkSkUFVb15DtBo4CCgCfqhZ7BmKuqg4WkVOA61X1PBFJxI2qTgceBpap6ssiEocb4VzUvL/IMOrHur8Mo/mpnBk2FnhcRPrjVunrBaCqS0XkCa+7bBwwT1XLvYlJbxGRzsAbqvpNOJQ3jPqw7i/DaEZEpAfOgOzCLb37I3AcMBi3imYlLwLjgcuB2QCq+grwc6AIeEdETm8+zQ2jYZhRMYxmQkTSgL/iJkNUnMN+hxcJdglupt9Kngd+B6Cq6738PYDNqvoYbjnoY5tPe8NoGNb9ZRhNSwsRWYU/pPhF4C/esSeBeSJyAfA+sKcyk6r+KCIbgDcDzvUr4GIRKQN2Anc3g/6G0SjMUW8YEYiItMSNbxmoqnnh1scwGop1fxlGhCEiI3Frksw0g2IcaFhLxTAMwwgZ1lIxDMMwQoYZFcMwDCNkmFExDMMwQoYZFcMwDCNkmFExDMMwQsb/A+2E/IDSH4/iAAAAAElFTkSuQmCC\n",
            "text/plain": [
              "<matplotlib.figure.Figure at 0x7f99a88c8a90>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "IeqqQ-Rxvjyg",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "EXTI-ExWvjyo",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        ""
      ],
      "execution_count": 0,
      "outputs": []
    }
  ]
}